关于键盘钩子达成的窗口键盘消息独占
DINPUT里面在创建完输入设备以后可以设置输入设备的exclusive属性来达到独占消息系统的目的
现在我手头的项目没有用Dinput,是直接用的键盘消息,所以想达到同样的效果。
我的思路:
1. windows消息WM_SETFOCUS和WM_KILLFOCUS时分别加载和卸载keyboard_ll钩子。
2. 当进入回调的时候,用sendmessage将消息原封不动的传给我们自己的窗口,然后return 1.
我用一个向导生成的win32程序做实验,并且在WM_KEYDOWN下面调用dialog显示。
问题如下:
1. 按alt键时,窗口菜单没响应,但是却收到了WM_SYSKEY_DOWN的消息。
2. 按任意一个键时,dialog显示了,马上又消失了。
看了很多键盘钩子的教程,都没有人用在独占消息这方面
麻烦大家提供以下思路,解决以下难点,如果有代码就更好了。
谢谢!
[解决办法]
只需要在程序启动时安装一次钩子,keyboard_ll的回调就是在安装钩子的线程运行,回调被调用就相当于消息到达了你的线程,此时立即PostMessage给窗口然后返回1