Tim*_*mwi 5 keyboard winapi raw-input
我正在使用Raw Input API,因为我需要能够以不同方式响应来自不同USB HID设备的密钥,即使它是相同的密钥.
我的窗口WM_INPUT正确收到消息.我可以检索RAWKEYBOARD结构以获取我需要的所有信息.
现在我想阻止那些USB设备切换NumLock.我希望Raw Input API可能允许我吞下NumLock按键?
我已经尝试将WM_INPUT消息的结果设置为1,但这似乎没有效果.
(我在C#中写这个,但由于这是所有低级Windows API,你可能不需要知道C#或.NET来回答这个问题.)
编辑:哦是的,我也尝试使用全局键盘钩(SetWindowsHookEx)来吞下NumLock按键.不幸的是,只要我初始化Raw Input API,就会在窗口处于活动状态时不再调用全局键盘钩子.我也尝试在Raw Input 之后设置全局钩子,但效果相同.
原始输入 API 不支持吞咽按键。
此外,它不在SetWindowsHookEx 同一进程内交互。原始输入 API 初始化后,挂钩就会脱钩。
解决方案是将它们放在不同的进程中。一个进程可以用来SetWindowsHookEx吞掉不需要的按键,而另一个进程则使用原始输入 API 来处理确实通过的按键。然后你只需运行两者即可。这对我来说效果很好。