提问人:Zahbod 提问时间:11/8/2023 最后编辑:Zahbod 更新时间:11/8/2023 访问量:99
键盘钩子不等待 SendMessage?
Keyboard hook does not wait for SendMessage?
问:
我需要阻止来自某个输入设备的键,我使用键盘钩来做到这一点,这里是钩子功能
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) {
if (SendMessage(targetWindow, WM_HOOK, wParam, lParam)) {
return 1;
}
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
由于键盘钩子无法接收设备句柄,因此我使用 Windows 消息传递系统向一个名为的自定义案例发送消息,在这种情况下,要查看哪个设备句柄正在创建输入,然后返回一个整数,因为它是设备句柄,该键应被阻止或不被阻止WM_HOOK
PeekMessage
WM_INPUT
RAWINPUT
整个钩子工作正常,除非我使用 ,无论如何都会产生 keydown 事件,该函数等待返回并且不执行任何操作,直到从消息返回(使用 ) 但是当我在我的钩子中使用时,即使钩子返回 1,也会产生 keydown 事件, 所以我不知道是什么导致了这种行为。
整个程序处于同一进程中,并且 2 个函数的通信成功,但是在涉及消息传递时,Windows 没有等待钩子,我不知道是什么原因造成的?SendMessage
std::cout
SendMessage
答: 暂无答案
评论
std::cout
进行测试日志记录可能会更好,它的侵入性较小。OutputDebugString