如何实现Honeywell扫描器读条码后自动打开对应应用(无需点击按钮)
解决方案思路
Honeywell扫描器默认会把条码内容模拟为键盘输入,且多数型号会在扫描完成后自动发送**回车符(Enter)**作为结束标记。我们可以利用这个特性,监听输入框的回车事件,自动触发程序启动,无需手动点击按钮。
具体实现步骤
1. 确认扫描器的结束标记
确保你的Honeywell扫描器设置为扫描后发送回车符(默认一般是这个)。如果不是,需要用扫描器附带的设置条码调整(参考扫描器手册里的"后缀设置"选项)。
2. 修改TextBox的KeyPress事件逻辑
直接复用TextBox的KeyPress事件,监听回车符来判断扫描完成,然后根据条码内容启动对应程序:
' 先定义条码与对应应用程序路径的映射,放在窗体类内部 Private barcodeToApp As New Dictionary(Of String, String) From { {"你的条码1", "d:\windows\notepad.exe"}, {"你的条码2", "C:\Program Files\Microsoft Edge\msedge.exe"}, {"更多条码", "对应程序的完整路径"} } Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress ' 检测扫描完成的回车符 If e.KeyChar = ChrW(13) Then e.Handled = True ' 阻止回车在输入框中显示换行 Dim scannedCode As String = TextBox1.Text.Trim() ' 检查当前条码是否有对应的应用 If barcodeToApp.ContainsKey(scannedCode) Then Try ' 启动对应程序 Process.Start(barcodeToApp(scannedCode)) Catch ex As Exception MessageBox.Show($"启动失败:{ex.Message}") End Try Else MessageBox.Show("该条码未绑定任何应用程序") End If TextBox1.Clear() ' 清空输入框,准备下一次扫描 End If End Sub
3. 额外优化建议
- 把TextBox的
Multiline属性设为False,避免回车导致输入框换行 - 如果扫描器发送的结束符不是回车,比如Tab(ChrW(9)),只需要把代码里的
ChrW(13)改成对应的控制符即可 - 若需要批量维护条码映射,可以把映射关系存在文本文件或配置文件里,程序启动时读取,不用硬编码
内容的提问来源于stack exchange,提问作者Jhoms
相关产品推荐
相关产品推荐

