Вопрос № 20144: Как в Edit1 вывести имя текущего пользователя Windows ?
edit1.text:=?????????...Вопрос № 20149: Уважаемые эксперты.
Как подсчитать скорость нажатия одной клавиши(допустим клавиши V) в минуту.
Заранее благодарен.
...
Вопрос № 20144
Как в Edit1 вывести имя текущего пользователя Windows ?
edit1.text:=?????????
Отправлен: 23.04.2005, 14:55
Вопрос задал: source (статус: Посетитель)
Всего ответов отправлено: 6
Отвечает: Васильев Павел
Здравствуйте, source!
var
sUserName: string;
iLength: Cardinal;
begin
iLength := 0;
if GetUserName(nil, iLength) then
begin
if iLength > 0 then
begin
SetLength(sUserName, iLength);
if GetUserName(PChar(sUserName), iLength) then
Edit1.Text := sUserName;
end;
end;
end;
Ответ отправил: Васильев Павел (статус: 1-ый класс)
Отправлен: 23.04.2005, 17:18
Отвечает: corsar
Здравствуйте, source!
var P : PChar;S : Cardinal;
begin
S:=100;
P:=StrAlloc(S);
if GetUserName(P,S) then
Edit1.Text:=string(P) else
Edit1.Text:='User name not found :)';
StrDispose(P);
end;
Приложение:
Ответ отправил: corsar (статус: 2-ой класс)
Отправлен: 23.04.2005, 17:52
Отвечает: Malish
Здравствуйте, source!
Я дам расширенный ответ. Может ты его и не будешь использовать, но так можно получить чуть больше. ;)
Для этого мы воспользуемся реестром. Там вообще прячется очень много полезной информации, но надо знать, где она лежит. Итак, чтобы использовать реестр, необходимо добавить модуль Registry в Uses. Затем надо объявить переменную типа TRegistry, а дальше открыть нужный ключ и прочитать оттуда все, что хочется. Например, в событии формы OnCreate напишите:
var R:TRegistry; begin R:=TRegistry.Create; {создаем экземпляр объекта} R.RootKey:=HKEY_LOCAL_MACHINE; R.OpenKey('SOFTWAREMicrosoftWindowsCurrentVersion', False); {#сюда потом запишем необходимые операторы}
R.Free; {уничтожим объект} end;
Чтобы прочесть какие-нибудь данные нужно воспользоваться функцией ReadString (если вам надо прочесть строку, чтобы прочитать число нужно воспользоваться функцией ReadInteger...). Допустим вы хотите, чтобы имя пользователя и название организации выводились с помощью метки. Тогда до оператора Free (после комментария #), впишите:
Edit1.Text:='Владелец: '+R.Readstring('RegisteredOwner')+#13+ 'Организация: '+R.Readstring('RegisteredOrganization');
Чтобы получить директорию Windows нужно вызвать R.Readstring('SystemRoot');
Обязательно посмотрите этот ключ реестра, там много полезных данных.
Ответ отправил: Malish (статус: Студент)
Отправлен: 23.04.2005, 23:16
Отвечает: VBA
Здравствуйте, source!
Вот функция, которая возвращает имя текущего пользователя:
function GetUserFromWindows: string;
var
UserName : string;
UserNameLen : Dword;
begin
UserNameLen := 255;
SetLength(userName, UserNameLen);
if GetUserName(PChar(UserName), UserNameLen) then
Result := Copy(UserName,1,UserNameLen - 1)
else
Result := 'Unknown';
end;
Т. е. теперь ты можешь написать:
edit1.text:=GetUserFromWindows;
Удачи!
Ответ отправил: VBA (статус: 1-ый класс)
Отправлен: 24.04.2005, 00:22
Отвечает: sir henry
Здравствуйте, source!
С помощью функции GetUserName(Буфер_типа_PChar, Length(Буфер_типа_PChar));
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 25.04.2005, 09:15
Отвечает: Delphin
Здравствуйте, source!
Пользуйся вот этой процедурой (см. приложение)
Объяви её например в Public а потом пиши где-нить в коде.
edit1.text := GetCurrentUserName;
Приложение:
Ответ отправил: Delphin (статус: 2-ой класс)
Отправлен: 25.04.2005, 19:39
Вопрос № 20149
Уважаемые эксперты.
Как подсчитать скорость нажатия одной клавиши(допустим клавиши V) в минуту.
Заранее благодарен.
Отправлен: 23.04.2005, 18:47
Вопрос задал: антон (статус: Посетитель)
Всего ответов отправлено: 2
Отвечает: John Freeman
Здравствуйте, антон!
Ловить KeyPress/Down и прибавлять соответствующую переменную, делить на время в минутах, клавиша - в аргументах callback'a VK_V или что-то вроде этого(константы в windows.pas)
Ответ отправил: John Freeman (статус: Профессор)
Отправлен: 23.04.2005, 19:06
Отвечает: X
Здравствуйте, антон!
Ну к примеру так(шитает кол-во нажатий клавиши v млм V в минуту и вывдит результат в Label)
Приложение:
Ответ отправил: X (статус: 2-ой класс)
Отправлен: 23.04.2005, 22:59