C++ 窗口未接收WM\U KEYDOWN/WM\U KEYUP事件
我通过SetWindowHookExA(从DLL注入)连接到另一个进程主窗口,并连接到WHU键盘事件。然而,我的回调从未被调用,但是挂钩成功了,我确实得到了原始值作为回报 使用Spy++进行调查后,窗口似乎从未收到任何WM_KEYUP/WM_KEYDOWN等消息。通过调试器进一步挖掘,我可以确认窗口消息正在由PeekMessage/TranslateMessage/DispatchMessage处理,因此根据基于PeekMessage的MSDN,事件应该正常发生。然而,它们似乎从未发生过 是否存在允许创建的窗口阻止这些消息在其窗口中发生的情况?(我也尝试过通过SetWindowLongPtr连接WNDPROC,但仍然没有成功,我的回调可以接收所有消息,但WM_KEY*消息从未发生过。) 应用程序确实使用DirectInput,但是在以前使用DirectInput的其他项目中,键盘消息仍然正常出现 只是简单地回顾一下我所做的尝试,例如:C++ 窗口未接收WM\U KEYDOWN/WM\U KEYUP事件,c++,windows,winapi,windows-messages,C++,Windows,Winapi,Windows Messages,我通过SetWindowHookExA(从DLL注入)连接到另一个进程主窗口,并连接到WHU键盘事件。然而,我的回调从未被调用,但是挂钩成功了,我确实得到了原始值作为回报 使用Spy++进行调查后,窗口似乎从未收到任何WM_KEYUP/WM_KEYDOWN等消息。通过调试器进一步挖掘,我可以确认窗口消息正在由PeekMessage/TranslateMessage/DispatchMessage处理,因此根据基于PeekMessage的MSDN,事件应该正常发生。然而,它们似乎从未发生过 是否存
- 使用WH_键盘设置WindowsHookxa;我从未打过电话
- 使用GWL_WNDPROC设置WindowLongPTR;呼叫被命中,从未看到键盘消息
- 确认窗口确实使用PeekMessage来处理它的消息,所以键盘消息应该可以正常发生
CallNextHookEx
。在这种情况下,键盘输入仍然可以到达目标窗口,但是链中的所有其他钩子都没有机会看到它。其他任何钩子都不会安装。我已经准备好了钩子,以防止任何其他钩子在我的钩子之后被应用,甚至没有人试图创建钩子。除了在调用消息时删除消息外,它们几乎使用所有空参数调用PeekMessage。因此,从外观上看,他们根本没有过滤掉结果消息。