|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Hook клавиши свернутой программой
Здравствуйте. тут такое дело:
Есть программа, на которой две кнопки: Старт и Стоп. Если нажать Старт, программа выполняет некие действия (не суть где: в блокноте, браузере, игре. В общем где угодно). Стоп, соответственно, останавливает выполнение. При этом программа, само собой, неактивная. Тут все работает. Но есть одна закавыка: чтобы запустить/остановить программу, нужно сворачивать целевое окно, нажимать Старт/Стоп, потом снова разворачивать окно, чтобы программа производила в нем действие. C активным окном программы проблем нет: Код:
if key = VK_F2 then button1.Click; if key = VK_F3 then button2.Click; Если можно пример, как при нажатии, например в Блокноте, кнопки F2 сделать так, чтобы в моей программе нажалась Button1. Или ну очень просто об этих Хуках. Как ими рулить, что куда писать, где и как применять? Заранее благодарен за любую помощь. |
#2
|
|||
|
|||
Вопрос закрыт. Сделал легко и незамысловато
Код:
uses ..., JwaWinUser; ... function LLKeyProc(nCode: integer; wp: WPARAM; lp: LPARAM): LRESULT; stdcall; var vk: DWORD; begin if nCode = HC_ACTION then begin vk := LPKBDLLHOOKSTRUCT(lp)^.vkCode; if wp = WM_KEYDOWN then case vk of VK_F2: if Form1.Button1.Enabled = true then Form1.Button1.Click; VK_F3: if Form1.Button2.Enabled = true then Form1.Button2.Click; end; end; Result := CallNextHookEx(0, nCode, wp, lp); end; Код:
hook := SetWindowsHookEx(WH_KEYBOARD_LL, @LLKeyProc, GetModuleHandle(nil), 0); Код:
UnhookWindowsHookEx(hook); |