2

我尝试使用 Global HooksSetWindowsHookEx来获取所有击键。

问题是我不能同时使用全局挂钩和原始输入。

我认为这里一定有一些问题,因为在我启用原始输入后全局挂钩会自动被禁用。

4

2 回答 2

3

谁告诉你它们需要一起使用?如果您的应用程序已注册为处理原始输入,则绝对没有理由安装全局挂钩。原始输入模型的重点是让应用程序接收通知并处理来自连接到计算机的任何 HID 的原始输入。

相反,您侦听WM_INPUT消息,该消息被发送到应用程序的消息队列,以获取您通过调用RegisterRawInputDevices函数注册的任何 HID 。收到此消息后,您的应用程序应使用消息参数中包含的句柄调用该GetRawInputData函数。示例代码可在此处获得。RAWINPUTlParamWM_INPUT

或者,您可以对原始数据进行缓冲读取。这对于一次生成大量输入的设备更有用。使用这种方法,您可以调用返回结构数组的GetRawInputBuffer函数RAWINPUT。同样,示例代码可在此处获得。

原始输入函数的专题阅读在MSDN 上

于 2011-04-13T05:35:51.693 回答
1

对于 LRESULT WindowProcedure 回调已经检查过的原始输入,您不需要挂钩。如果使用了 mouse_pos、mouse_click(以及您可以通过计数器确定的点击次数)、key_input 等设备,您只需要取回信息...

于 2011-11-24T05:32:26.490 回答