Код:
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;
И после в Form1.Create
Код:
hook := SetWindowsHookEx(WH_KEYBOARD_LL, @LLKeyProc, GetModuleHandle(nil), 0);
А в Form1.Destroy
Код:
UnhookWindowsHookEx(hook);
Всё отлично работает так, как и задумывалось.