无界面程序创建的钩子不能发消息给创建他的线程!
一个无界面(没有窗口)win32工程创建一个全局键盘钩子之后进入消息循环,目的是希望当某一特定键被按下时主线程退出。本来打算监测到特定的按键时发给主线程一条WM_QUIT消息(主线程的ID预先传给了钩子所在dll的一个全局变量),结果发现钩子执行
PostThreadMessage(idMain,WM_QUIT,NULL,NULL);//idMain为主线程ID
这个ID绝对是主线程的,但发消息就是不成功
时就挂起了后来发现只要是在这个dll中的全局变量钩子都访问不了,访问就挂起。
但是,假如主线程是有窗口的,就一切正常了
欢迎大家讨论、试验和赐教。