Windowsフックを使用して別のアプリケーションのメッセージを取得しようとしています。SetWindowsHookExを使用してWH_GETMESSAGEフックを設定しました。これはDLLを介して行われます。GetMsgProc関数(ターゲットアプリケーションがメッセージを受信するたびに呼び出す必要があります)で、メッセージのタイプに基づいてアクションを実行したいと思います。ただし、このifステートメントで問題が発生しています。
LRESULT CALLBACK MessageHookProcedure(int code, WPARAM wParam, LPARAM lParam){
if(((MSG*)lParam)->message == WM_COMMAND){
MessageBox(NULL,L"The hook procedure was called",L"Test Window",MB_OK);
}
return CallNextHookEx(g_MessageHook,code,wParam,lParam);
}
何らかの理由で、MessageBoxが作成されることはありません。アプリケーションがSpy++からWM_COMMANDメッセージを受信していることを知っています。IFステートメントを取り出すと、さまざまなメッセージを受信するときにMessageBoxが何度も作成されます。