所以我知道这个问题已经问过很多次了,但我似乎找不到合适的答案。
有人知道如何从任何C#/.NET (.NET 6)应用程序中读取HID设备吗?
我尝试过几个包/项目,例如:
这些项目的重点是从所有键盘上获取数据,并检查数据来自何处。
现在,我真正需要的是一种库/方法,可以从这些设备接收数据,而不需要windows、窗体、句柄甚至是应用程序的焦点。它的工作方式应该是我可以简单地从设备中获取数据,而不需要任何用户交互或关注应用程序,这样它就可以从.NET控制台应用程序中工作。
我发现的一个非常有趣的库是HID.NET库(https://github.com/MelbourneDeveloper/Device.Net),这个库的一个问题是,我得到了与这个家伙(https://github.com/MelbourneDeveloper/Device.Net/issues/88)相同的问题。因此,它指出,访问被拒绝打开设备进行阅读。
这意味着我也不能使用这个库。
所以我觉得也许有人能帮我更多的忙。我希望在这一问题上能有任何进一步的进展。
在此之前,非常感谢您。
发布于 2022-03-28 11:33:28
非常奇怪的是,微软选择在所谓的“独占模式”中打开这类设备,参见:https://learn.microsoft.com/en-us/windows-hardware/drivers/hid/hid-architecture#hid-clients-supported-in-windows。
这说明这些设备是以独占模式打开的:
driver
关于这种排他性模式,它们声明如下:
在上表中,输入HID客户端的访问模式是独占的,以防止其他HID客户端在不是输入的目标接收者时拦截或接收全局输入状态。因此,出于安全原因,RIM (原始输入管理器)只会打开所有此类设备。
如果由RIM (Raw interface )以独占方式打开设备,用户仍然可以打开HID设备接口,而无需请求读写权限,并通过HIDClass支持例程(HidD_GetXxx)获取HID设备信息。
这意味着我想做的事情,所以接收USB-HID软件包永远不会(?)是允许的,因此不是一种选择。为了实现我想要的功能,可以选择将驱动程序切换到自定义HID或COMport。
https://stackoverflow.com/questions/71369979
复制相似问题