![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте. тут такое дело:
Есть программа, на которой две кнопки: Старт и Стоп. Если нажать Старт, программа выполняет некие действия (не суть где: в блокноте, браузере, игре. В общем где угодно). Стоп, соответственно, останавливает выполнение. При этом программа, само собой, неактивная. Тут все работает. Но есть одна закавыка: чтобы запустить/остановить программу, нужно сворачивать целевое окно, нажимать Старт/Стоп, потом снова разворачивать окно, чтобы программа производила в нем действие. 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); ![]() |