首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >读取HID设备输入,例如从键盘或条形码扫描器读取

读取HID设备输入,例如从键盘或条形码扫描器读取
EN

Stack Overflow用户
提问于 2022-03-06 11:46:48
回答 1查看 1.9K关注 0票数 1

所以我知道这个问题已经问过很多次了,但我似乎找不到合适的答案。

有人知道如何从任何C#/.NET (.NET 6)应用程序中读取HID设备吗?

我尝试过几个包/项目,例如:

这些项目的重点是从所有键盘上获取数据,并检查数据来自何处。

现在,我真正需要的是一种库/方法,可以从这些设备接收数据,而不需要windows、窗体、句柄甚至是应用程序的焦点。它的工作方式应该是我可以简单地从设备中获取数据,而不需要任何用户交互或关注应用程序,这样它就可以从.NET控制台应用程序中工作。

我发现的一个非常有趣的库是HID.NET库(https://github.com/MelbourneDeveloper/Device.Net),这个库的一个问题是,我得到了与这个家伙(https://github.com/MelbourneDeveloper/Device.Net/issues/88)相同的问题。因此,它指出,访问被拒绝打开设备进行阅读。

这意味着我也不能使用这个库。

所以我觉得也许有人能帮我更多的忙。我希望在这一问题上能有任何进一步的进展。

在此之前,非常感谢您。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-28 11:33:28

非常奇怪的是,微软选择在所谓的“独占模式”中打开这类设备,参见:https://learn.microsoft.com/en-us/windows-hardware/drivers/hid/hid-architecture#hid-clients-supported-in-windows

这说明这些设备是以独占模式打开的:

driver

  • Keyboard / Keypad类驱动程序和映射器driver

  • External Pen Device

  • Integrated Pen Device

  • Touchscreen

  • Precision Touchpad (PTP)

关于这种排他性模式,它们声明如下:

在上表中,输入HID客户端的访问模式是独占的,以防止其他HID客户端在不是输入的目标接收者时拦截或接收全局输入状态。因此,出于安全原因,RIM (原始输入管理器)只会打开所有此类设备。

如果由RIM (Raw interface )以独占方式打开设备,用户仍然可以打开HID设备接口,而无需请求读写权限,并通过HIDClass支持例程(HidD_GetXxx)获取HID设备信息。

这意味着我想做的事情,所以接收USB-HID软件包永远不会(?)是允许的,因此不是一种选择。为了实现我想要的功能,可以选择将驱动程序切换到自定义HID或COMport。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71369979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档