-1

キーストロークを監視する 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.

基本的に、コードをこれに減らしましたが、動作はまだ存在します。コードの何が問題なのですか?

4

1 に答える 1