我有一个条形码扫描仪(它的作用就像一个键盘),当然我还有一个连在电脑上的键盘。软件同时接受来自扫描仪和键盘的输入。我只需要接受扫描仪的输入。代码是用C#编写的。有没有办法“禁用”键盘输入,只接受扫描仪的输入?
注:键盘是laptop...so的一部分,不能拔出。此外,我还尝试将以下代码保护覆盖Boolean ProcessDialogKey(System.Windows.Forms.Keys keyData) {ProcessDialogKey true;},但是在忽略键盘击键的同时,条形码扫描器输入也被忽略。
我不能让扫描器发送sentinal字符,因为扫描器正在被其他应用程序使用,添加sentinal字符流将意味着修改其他代码。
此外,我不能使用计时方法来确定输入是否来自条形码扫描仪(如果它是一串字符,后面跟着一个停顿),因为扫描的条形码可能是单字符条形码。
是的,我正在从流中读取数据。
我正在尝试跟随这篇文章:在WinForms中区分条形码扫描器和键盘。然而,我有以下问题:
的.cs文件中
关于Nicholas Piasecki在http://nicholas.piasecki.name/blog/2009/02/distinguishing-barcode-scanners-from-the-keyboard-in-winforms/上发布的C#解决方案源代码的后续问题
Visual
"\??\HID#Vid_0536&Pid_01c1&MI_01#9&25ca5370&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}“
"\??\HID#Vid_0536&Pid_01c1&MI_00#9&38e10b9&0&0000#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}“
"\??\HID#Vid_413c&Pid_2101&MI_00#8&1966e83d&0&0000#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}“
"\??\HID#Vid_413c&Pid_3012#7&960fae0&0&0000#{378de44c-56ef-11d1-bc8c-00a0c91405dd}“
"\??\Root#RDP_KBD#0000#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}“"\??\ACPI#PNP0303#4&2f94427b&0#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}”"\??\Root#RDP_MOU#0000#{378de44c-56ef-11d1-bc8c-00a0c91405dd}“"\??\ACPI#PNP0F13#4&2f94427b&0#{378de44c-56ef-11d1-bc8c-00a0c91405dd}”
因此,有两个HID#Vid_0536&Pid_01c1条目;这会导致扫描无法工作吗?
好的,看起来我必须找出一种不依赖于scanner...since发送的ASCII0x04字符的方法,我的扫描仪不会发送该字符。之后,触发条形码扫描事件,并显示带有条形码的弹出窗口。所以感谢Nicholas的帮助。
https://stackoverflow.com/questions/587840
复制相似问题