Delphi: виртуальные клавиши. Программное нажатие клавиш
В этой статье рассказано о том, как с помощью Delphi написать программу, которая будет отслеживать глобальное нажатие комбинаций клавиш, и сама нажимать на клавиши. Идея написать подобную программу пришла после того, как в игре “Diablo 3” появилась сложная задача, требующая многократного нажатия клавиш.
Нажимать программно кнопки можно с помощью таймера – стандартного компонента Timer1 в Delphi.
Итак, приступим.
Создаем новый проект с формой (можно без формы, но для обучения подходит и с формой). В тексте модуля ищем раздел PRIVATE и добавляем туда описание процедуры:
private { Private declarations } id1: Integer; procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
Там же добавлено описание переменной, в которой будет храниться код глобального сочетания клавиш.
В разделе IMPLEMENTATION пишем тело процедуры
implementation {$R *.DFM} // Trap Hotkey Messages procedure TForm1.WMHotKey(var Msg: TWMHotKey); begin if Msg.HotKey = id1 then begin // была нажата наша клавиша // совершаем какие-то действия end; end;
Формируем процедуру создания формы, в которой зарегистрируем глобальный перехват комбинации клавиш CTRL+A.
procedure TForm1.FormCreate(Sender: TObject); const MOD_CONTROL = 2; VK_A = $41; begin // Register Hotkey Ctrl + A id1 := GlobalAddAtom('Hotkey1'); RegisterHotKey(Handle, id1, MOD_CONTROL, VK_A); end;
При закрытии программы осовободим глобальный перехватчик нажатия клавиш.
procedure TForm1.FormDestroy(Sender: TObject); begin UnRegisterHotKey(Handle, id1); GlobalDeleteAtom(id1); end;
Программно нажимаем, например, на клавишу '1' с помощью процедуры Timer компонента Timer1 (не забудьте поставить этот компонент на форму).
procedure TForm1.Timer1Timer(Sender: TObject); begin Application.ProcessMessages; keybd_event(Ord('1'), 0, 0, 0); //Нажатие '1'. Application.ProcessMessages; Sleep(round(Random(500))); Application.ProcessMessages; keybd_event(Ord(‘1’), 0, KEYEVENTF_KEYUP, 0); //Отпускание '1'. Application.ProcessMessages; end;
В этой процедуре последовательно вызываются функции отправки сообщений в систему о нажатии клавиши '1', о паузе (как будто мы держим клавишу нажатой), об отпускании клавиши.
Между этими функциями вставлены обработчики Application.ProcessMessages, позволяющие принимать программой другие сообщения от операционной системы.
Apache — это кросплатформаенное программное обеспечение, относящееся к классу http-серверов. Поддерживается множеством операционных систем: Windows, Linux, MacOS и т.д. Одним из ключевых факторов в вопросе использования данного web-сервера является гибкость настройки и надежность выполнения операций. Apache включает в себя множество дополнительных модулей, позволяющих работать с различными базами данных, контролировать аутентификацию пользователей и т.д.
Интересные материалы на сайте:
Статья актуальна для Windows XP. Учимся менять приоритеты процессам, чтобы ускорить нужные или замедлить ненужные процессы.
Простой анализатор числового значения индекса цитирования от Яндекс.
Описание методов и функций, позволяющих рисовать на рабочем столе компьютера. Алгоритмы используются в программе для создания анимированных виртуальных открыток.
Очень хороший монитор конце 2000-х. До сих пор работает без нареканий. Красивый, удобный. Но, разумеется, уже устаревший, как динозавр...