如果用控制台程序挂载全局HOOK,当截取消息的时候,会出现发出消息的进程锁住的情况。
具体查阅了很多的资料。
1钩子处理函数还是由线程的消息泵开始调用的
1钩子的线程是又安装钩子的线程进行调用。
2钩子的回调函数是由安装钩子的线程进行调用的
3回调函数需要传递消息MSG
由于控制台程序没有消息响应机制,所以无法获取和转发消息所以必须加上一下代码:
MSG msg;
DWORD ret;
while (ret = GetMessage(&msg, NULL, 0, 0))
{
if (ret == -1) break; // error...
TranslateMessage(&msg);
DispatchMessage(&msg);
}
用来获取并转发消息
这样消息才可以继续转发,然后才不会出现堵塞现象