在 Windows 8 中使用来自 C# 的原始输入获取 HID 键盘设备
本文关键字:获取 输入 原始 HID 键盘 Windows | 更新日期: 2023-09-27 18:35:10
>我阅读了文章使用来自 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 及更高版本中不再使用 Class REG_SZ 值。
您可以改用"服务"值,但请确保搜索相应的数据 kbdhid
string deviceClass = (string)OurKey.GetValue("Service");
if (deviceClass.Equals("kbdhid"))