【问题标题】:How can i restrict windows form textbox to read input only from my USB barcode scanner?如何限制 Windows 窗体文本框仅从我的 USB 条形码扫描仪读取输入?
【发布时间】:2015-02-03 09:26:02
【问题描述】:

我正在开发一个用户需要从条形码扫描仪获取输入的应用程序。 它是一种 USB 类型,可在几秒钟内扫描并返回数据。

我试图通过多种技术停止从键盘获取输入

将我的文本框设为只读但无法从阅读器获取输入

托管按键事件但条形码阅读器实际上充当键盘,因此我无法获得所需的输出

我需要知道有没有什么方法可以限制用户在特定时间在 windows 窗体的 textBox 中提供输入或限制用户仅从特定端口提供输入?

我使用代码128symbology 生成条形码。

【问题讨论】:

  • 欢迎来到 SO。为什么不能以编程方式从扫描仪读取输入,然后设置只读TextBox 的Text 属性?目前如何绑定?
  • 您可以做一件事,将文本框的只读属性设置为true,然后将usb值设置为false后将其传递给文本框

标签: c# time-limiting


【解决方案1】:

相关:How do I read input from a USB HID device?

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 设备,并且您希望程序的文本框仅接受来自这个特定设备的输入,您可以使用 HID Raw Input 技术。但是,这需要处理来自设备的原始 HID 报告。

在初始化期间,您的软件会从具有特定顶级集合 (TLC) 的 HID 输入设备注册 Raw Input。

使用GetRawInputDeviceList 枚举可用的原始输入设备,并使用GetRawInputDeviceInfo 查找每个设备的名称。在名称字符串中,您应该能够匹配 USB VID/PID 值,因此您可以识别击键消息是否来自条形码扫描仪。请务必保存此枚举发现的匹配设备句柄hDevice。

扩展您的 windowproc 以通过 GetMessage 和 GetRawInputData 处理 WM_INPUT 消息,并通过将原始输入句柄与之前确定的条码扫描器的设备句柄进行匹配来过滤来自标准键盘的消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多