我一直在尝试使用钩子的东西,我不明白为什么钩子必须与消息队列一起使用
hook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, NULL, 0);
MSG msg;
while(GetMessage(&msg, NULL, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnhookWindowsHookEx(hook);
Run Code Online (Sandbox Code Playgroud)
为什么这样的东西不起作用?
hook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, NULL, 0);
cin >> aKey;
UnhookWindowsHookEx(hook);
Run Code Online (Sandbox Code Playgroud)
使用增强螺纹和屏障也不起作用.为什么不能以另一种方式完成钩子和钩子之间的等待?
编辑:
我在创建这个示例时犯了一个错误,我创建了一个WH_KEYBOARD_LL挂钩,而不是WH_KEYBOARD,(我认为它不会产生很大的影响)
循环永远不会只在GetMessage函数上等待.
循环仅在我发布退出消息时执行,PostThreadMessage(id, WM_QUIT, 2323, NULL);所以我不明白它在等待时做了什么,是否有一些内部处理?
有关: