我已经设置了一个 WH_KEYBOARD_LL 挂钩来监视击键,代码在一段时间内可以正常工作,但突然停止,应用程序没有给出任何错误。
我开始调试它,并且在函数中有断点时,行为很快就出现了。看起来该函数被调用了大约 6 次,直到它停止接收键盘事件。
function hookproc(code: Integer; wparam: WPARAM;lparam: LPARAM): LRESULT; stdcall;
begin
result := CallNextHookEx(hook, code, wParam, lParam); // I have put breakpoint here
end;
procedure Start();
begin
hook := SetWindowsHookEx(WH_KEYBOARD_LL,@hookproc,GetModuleHandle(nil),0);
end;
procedure TMyApplication.DoRun;
var
msg : tagMSG;
begin
Start();
ZeroMemory(@msg,sizeof(msg));
while GetMessage(Msg, 0, 0, 0) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end.
基本上我将代码简化为这个,并且行为仍然存在。知道代码有什么问题吗?