我正在使用原始输入API因为我需要能够以不同的方式响应来自不同 USB HID 设备的按键,即使它是相同的按键。
我的窗口收到WM_INPUT
消息正确。我可以检索RAWKEYBOARD结构获取我需要的所有信息。
现在我想阻止这些 USB 设备切换 NumLock。我希望原始输入 API 可以让我吞下 NumLock 按键?
我尝试将 WM_INPUT 消息的 Result 设置为 1,但这似乎没有效果。
(我用 C# 编写此内容,但由于这都是低级 Windows API,因此您可能不需要 C# 或 .NET 知识来回答此问题。)
编辑:哦,是的,我也尝试过使用全局键盘挂钩(SetWindowsHookEx
)吞掉 NumLock 按键。不幸的是,一旦我初始化原始输入 API,当窗口处于活动状态时,就不再调用全局键盘挂钩。我也尝试过设置全局钩子after原始输入,但效果相同。
原始输入 API 不支持吞咽按键。
此外,它不与SetWindowsHookEx
在同一进程内。原始输入 API 初始化后,挂钩就会脱钩。
解决方案是将它们放入单独的进程。一个进程可以使用SetWindowsHookEx
吞掉不需要的按键,而另一个则使用原始输入 API 来处理确实通过的按键。然后你只需运行两者即可。这对我来说效果很好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)