Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2023, 15:50   #1
Alex711
Пользователь
 
Регистрация: 21.09.2018
Сообщений: 99
По умолчанию 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;
Но ничего не получается.
Alex711 вне форума Ответить с цитированием
Старый 17.10.2023, 16:11   #2
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,777
По умолчанию

Тут.

А, не.

Цитата:
Сообщение от Alex711 Посмотреть сообщение
клацнуть "enter" в окне авторизации пользователя Windows7 из службы.
Не выйдет. В 6-м ядре что-то существенно поменялось, не помню что.
Vapaamies вне форума Ответить с цитированием
Старый 18.10.2023, 11:57   #3
Alex711
Пользователь
 
Регистрация: 21.09.2018
Сообщений: 99
По умолчанию

Vapaamies, Ещё удалось получит handle этого поля и отправить туда строку из WinSpy, как туда строку из службы закинуть?
Изображения
Тип файла: jpg IMG_20231018_103344_1000.jpg (79.6 Кб, 0 просмотров)
Тип файла: jpg IMG_20231018_103321_1000.jpg (69.6 Кб, 0 просмотров)
Тип файла: jpg IMG_20231018_103155_1000.jpg (78.6 Кб, 0 просмотров)
Alex711 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с SendKeys Vadim39 Microsoft Office Word 17 22.05.2013 22:36
Проблема с SendKeys termitru Win Api 1 26.07.2011 22:21
Где найти модуль SendKeys? saylar_06 Общие вопросы Delphi 4 29.05.2011 19:20
application.sendkeys "~" ruavia3 Microsoft Office Excel 1 12.02.2010 16:24