[英]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.