これらの関数を DLL で宣言しています。それらをスタンドアロン アプリケーションで使用するとすべてがうまくいきますが、サービスで使用すると結果が得られません。フックはありません。
function HookProc(code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
Result := CallNextHookEx(Code, code, wParam, lParam)
end;
procedure StartHook; stdcall;
begin
HookHandle := SetWindowsHookEx(WH_GETMESSAGE, HookProc, hInstance, 0);
end;
procedure StopHook; stdcall;
begin
UnhookWindowsHookEx(HookHandle);
end;
この問題は、Vista 以降でのみ発生します。