Здравствуйте, у меня следующий код:
var
KeyHook: HHOOK;
function KeyHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
type
PKBDLLHOOKSTRUCT = ^TKBDLLHOOKSTRUCT;
TKBDLLHOOKSTRUCT = packed record
vkCode: DWORD;
scanCode: DWORD;
flags: DWORD;
time: DWORD;
dwExtraInfo: DWORD;
end;
const
LLKHF_ALTDOWN = $20;
var
pkbhs: PKBDLLHOOKSTRUCT;
begin
pkbhs := PKBDLLHOOKSTRUCT(lParam);
if nCode = HC_ACTION then
begin
if (pkbhs^.vkCode = VK_ESCAPE) and WordBool(GetAsyncKeyState(VK_CONTROL) and $8000) then
begin
Result := 1;
Exit;
end;
end;
Result := CallNextHookEx(KeyHook, nCode, wParam, lParam);
end;
initialization
KeyHook := SetWindowsHookEx(WH_KEYBOARD_LL, @KeyHookProc, 0{HInstance}, 0);
if KeyHook = 0 then
RaiseLastOSError;
и это хорошо работает, когда я запускаю его как процесс.
Но когда я пытаюсь заставить его работать в режиме обслуживания, он не работает.
Не работает = Не обнаруживает нажатия клавиш.
Что я делаю не так?
Спасибо!