我正在尝试使用 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 会在接收各种消息时一遍又一遍地创建。