17.10.2023, 15:49
|
Новичок
|
|
Регистрация: 18.09.2018
Сообщения: 62
Версия Delphi: Delphi 7
Репутация: 10
|
|
SendKeys
Здравствуйте, подскажите пожалуйста как заполнить пароль и клацнуть "enter" в окне авторизации пользователя Windows7 из службы. Пытаюсь так:
Код:
procedure SimulateKeyDown(Key : byte);
begin
keybd_event(Key, 0, 0, 0);
end;
procedure SimulateKeyUp(Key : byte);
begin
keybd_event(Key, 0, KEYEVENTF_KEYUP, 0);
end;
procedure SimulateKeystroke(Key : byte; extra : DWORD);
begin
keybd_event(Key,extra,0,0);
keybd_event(Key,extra,KEYEVENTF_KEYUP,0);
end;
procedure SendKeys(s : string);
var
i : integer;
flag : bool;
w : word;
begin
{Get the state of the caps lock key}
flag := not GetKeyState(VK_CAPITAL) and 1 = 0;
{If the caps lock key is on then turn it off}
if flag then
SimulateKeystroke(VK_CAPITAL, 0);
for i := 1 to Length(s) do
begin
w := VkKeyScan(s[i]);
{If there is not an error in the key translation}
if ((HiByte(w) <> $FF) and (LoByte(w) <> $FF)) then
begin
{If the key requires the shift key down - hold it down}
if HiByte(w) and 1 = 1 then
SimulateKeyDown(VK_SHIFT);
{Send the VK_KEY}
SimulateKeystroke(LoByte(w), 0);
{If the key required the shift key down - release it}
if HiByte(w) and 1 = 1 then
SimulateKeyUp(VK_SHIFT);
end;
end;
{if the caps lock key was on at start, turn it back on}
if flag then
SimulateKeystroke(VK_CAPITAL, 0);
end;
procedure TServiceTest.ServiceExecute(Sender: TService);
begin
Sleep(30000);
//SimulateKeystroke(VK_CAPITAL, 0);
Application.ProcessMessages;
SendKeys('111');
//Sleep(1000);
SimulateKeystroke(VK_RETURN, 1);
end;
Но ничего не получается.
|