繁体   English   中英

在Windows 8中使用C#的原始输入获取HID键盘设备

[英]Get HID Keyboard Device Using Raw Input from C# in Windows 8

我阅读了《 使用C#使用原始输入来处理多个键盘》并下载了源代码 当我在Windows 7中运行它时,它可以工作,但在Windows 8中运行它时,它失败了。

我有“对象引用未设置为对象的实例”。 错误

string deviceClass = (string)OurKey.GetValue("Class");
if (deviceClass.ToUpper().Equals("KEYBOARD"))

我在string deviceClass处放置了断点,并看到该值为null。 如果您查看下载的源,那么将从注册表中获取值。 Windows 7和Windows 8在获取此值方面有什么区别吗? 我该如何解决?

该代码希望在适当的HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\HID\\密钥中存在Class值,在我的Windows 8计算机上,所有条目都没有该密钥,因此您将获得描述的行为。

即使键确实存在,这也是获取课程的一种糟糕方法; 而是p / invoke GetRawInputDeviceInfo()作为设备类。

这是由于Windows 8及更高版本中不再使用的REG_SZ 值。

您可以改用Service值,但请确保搜索适当的数据kbdhid

string deviceClass = (string)OurKey.GetValue("Service");
if (deviceClass.Equals("kbdhid"))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM