我正在开发一个应用程序,用户需要从条形码扫描仪获取输入。它是一种 USB 类型,可在几秒钟内扫描并返回数据。
我试图通过多种技术停止从键盘获取输入
使我的文本框只读但未能从阅读器获得输入
托管按键事件但条形码阅读器实际上充当键盘,因此我无法获得所需的输出
我需要知道是否有任何方法可以限制用户在特定时间在 windows 窗体的文本框中提供输入或限制用户仅从特定端口提供输入?
我使用代码128symbology
生成条形码。
我正在开发一个应用程序,用户需要从条形码扫描仪获取输入。它是一种 USB 类型,可在几秒钟内扫描并返回数据。
我试图通过多种技术停止从键盘获取输入
使我的文本框只读但未能从阅读器获得输入
托管按键事件但条形码阅读器实际上充当键盘,因此我无法获得所需的输出
我需要知道是否有任何方法可以限制用户在特定时间在 windows 窗体的文本框中提供输入或限制用户仅从特定端口提供输入?
我使用代码128symbology
生成条形码。
CodeProject 的相关文章:http: //www.codeproject.com/Articles/17123/Using-Raw-Input-from-C-to-handle-multiple-keyboard
MSDN 上的文章:https ://msdn.microsoft.com/en-us/library/windows/desktop/ms645543(v=vs.85).aspx
这看起来可能是重复的,但我会在这里总结一下以避免链接失效:
由于您指出您的条形码扫描仪是一个充当 HID 键盘的 USB 设备,并且您希望程序的文本框只接受来自这个特定设备的输入,因此您可以使用 HIDRaw Input
技术。但是,这需要处理来自设备的原始 HID 报告。
在初始化期间,您的软件Raw Input
从具有特定顶级集合 (TLC) 的 HID 输入设备注册。
用于GetRawInputDeviceList
枚举可用的原始输入设备,并用于GetRawInputDeviceInfo
查找每个设备的名称。在名称字符串中,您应该能够匹配 USB VID/PID 值,因此您可以识别击键消息是否来自条形码扫描仪。请务必保存hDevice
此枚举发现的匹配设备句柄。
扩展您的 windowproc 以通过和处理WM_INPUT
消息,并通过将原始输入句柄与先前确定的条码扫描器的设备句柄进行匹配来过滤来自标准键盘的消息。GetMessage
GetRawInputData