如何在不使用文本框的情况下从 vb.net 中的条形码扫描仪读取输入?

2023-11-30

我的程序已经运行良好,我使用文本框来捕获条形码扫描仪输入。我的程序的目的是用于时间和出勤监控,问题是我想阻止用户使用键盘输入他们的 ID,因为这会使条形码扫描仪和带有条形码的 ID 毫无用处。

*我已经尝试从计算机上卸下键盘并且确实有效,但不得按要求卸下键盘...


选项1:

获取连接到串行端口(由 COM 端口读取的原始串行设备)的条形码扫描仪。由于大多数条形码扫描仪模拟键盘敲击,因此无法直接区分条形码扫描仪输入和键盘输入(请参阅下一个选项)而不进入低级别(请参阅上次更新)。

一个连接到串行端口(或通过 USB 模拟一个,因为串行端口不再那么常见)可以让您完全控制输入的来源。

选项2:

按时间计算输入的字符数。与打字相比,条形码扫描仪注入序列(行)的速度相当快。通过计算按键次数来测量文本框中使用的时间(使用 CR+LF 作为测量点,因为这些也是由扫描仪发送的)可以为您提供一种区分是否有人正在打字的方法(除非有一个打字速度很快的人)如 f) 或内容被注入。如果超时,则拒绝/清除输入。

此外,除了时间测量之外,条形码的校验和(如果您使用包含该校验和的校验和)还可用于进行额外的验证。

(您可以通过覆盖 ctrl + v 来检测粘贴,如下一个选项所示)。

选项 3:

组合选项 2,但不是在文本框中进行测量,而是点击 ProcessCmdKey() 函数(通过覆盖它)并在文本框具有焦点时进行测量。这样,您可以首先缓冲输入,测量时间,如果在设置的超时值内,则将该行插入文本框。

Update:

选项 4:非技术方法 -

可用性改进:在视觉上非常清楚地表明条形码必须使用扫描仪输入而不是键入。我将其作为一个选项包括在内,因为它很简单,并且如果正确的话也有效(不幸的是,没有正确答案)。

接触过的可能包括 f.ex。文本框中的水印(“不要输入,扫描!”或类似的内容)。给它不同的颜色、边框、大小等,以将其与普通文本框区分开来,并提供关联的帮助文本并随时可用,以提高清晰度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在不使用文本框的情况下从 vb.net 中的条形码扫描仪读取输入? 的相关文章

  • 使用 Group By LINQ 语句时 VB.NET 返回 IEnumerable(Of IEnumerable(Of T))

    我正在尝试转换安西姆 凯拉德INotifyDataErrorInfo执行 http burnaftercoding com post asynchronous validation with wpf 4 5 进入VB NET 一切顺利 直到
  • 需要将用户名和密码添加到 VB.NET Web 服务客户端中的 SOAP 标头

    我需要查询一个进行基本身份验证的 Web 服务 将用户名和密码放在请求标头中 我的客户端是用 VB NET Visual Basic Express Edition 2010 编写的 我已将 Web 服务添加到服务引用中 它为我自动生成了合
  • 简单的if检查多个值vb

    在Sql中我们可以像这样过滤 SELECT FROM 表名 WHERE 列名 IN firstValue secondValue 如何在VB Net中检查 有简单的方法吗 或者 只是 If variable firstValue Or va
  • 使用 DirectCast、CType、TryCast 转换数据类型

    自从我在 2005 年从 VB6 迁移到 VB NET 以来 我一直在使用 CType 将一种数据类型转换为另一种数据类型 我这样做是因为它打字速度更快 以前存在于 VB6 中 而且我不知道为什么我必须使用 DirectCast 如果它们之
  • 如何确定任务栏位于哪个屏幕

    Screen PrimaryScreen 并不总是有效 因为在多显示器设置中 用户可能会将其任务栏移动到主屏幕以外的屏幕 找到具有最小工作区域的屏幕也不起作用 因为可能存在具有不同分辨率的显示器 有什么办法可以通过任务栏定位屏幕吗 您可以使
  • 从文件资源管理器打开我的应用程序中的文件

    我在 VB NET 中创建了自己的应用程序 该应用程序将其文档保存到具有自己的自定义扩展名 eds 的文件中 假设我已将文件扩展名与我的应用程序正确关联 那么当我在文件资源管理器中双击该文件时 如何实际处理应用程序中所选文件的处理 我是在
  • WPF DataGrid 显示点而不是逗号

    在网上查找并寻找答案后没有结果 我想向您寻求帮助 我有一个包含 2 列的 SQL 数据库表 浮点数据类型 例如 1 2 1 3 1 4 等 绑定到一个DataGrid XAML 代码
  • 您是否必须在 VB.NET 中显式创建表单实例? [复制]

    这个问题在这里已经有答案了 如果一个项目包含Form类 形式可以通过以下方式显示 Form1 Show 或者是否需要首先创建表单的实例 Dim frm As New Form1 frm Show 正如所建议的 使用表单名称使用默认实例 而第
  • 如何隐藏数据列表中的项目

    我想隐藏一个项目datalist根据某种条件起诉ItemBound how Wrap a PlaceHolder控制整个内容ItemTemplate 然后在 ItemDataBound 事件中 您可以执行以下操作 Protected Sub
  • 使用 Rijndael 解密文本文件

    我用过本指南 https www codeproject com Articles 12092 Encrypt Decrypt Files in VB NET Using Rijndael加密的值txtCode Text到一个文本文件中 然
  • 回发 Asp.Net 上的动态用户控件

    我创建了一个项目 user control 它有一个文本框 按钮等 它将有意收集用户想要的项目总数 我在 page load 上动态创建了几个 user control 实例 如果您单击项目数量的添加按钮 它将添加到会话变量中 但是 当用户
  • 将集合项复制到 .NET 中的另一个集合

    在 NET VB 中 如何获取一个集合中的所有项目 并将它们添加到第二个集合中 而不丢失第二个集合中预先存在的项目 我正在寻找比这更有效的东西 For Each item As Host In hostCollection1 hostCol
  • 尝试添加注册表项时出现未处理的异常

    当我使用以下代码时 My Computer Registry LocalMachine OpenSubKey SOFTWARE Microsoft Windows CurrentVersion Run True SetValue Appli
  • .NET框架,Windows XP

    我们使用 Visual Studio 2012 构建了一个应用程序 它可以在任何 Windows 7 或 Vista 计算机 32 位或 64 位 上完美运行 但是 当我尝试在 Win XP 计算机上运行该应用程序时 我得到以下信息 系统组
  • 计算文本框中换行的行数

    我在文本框中有一行文本 并且换行为多行 如何计算文本框中换行的行数 你可以使用String Split int lineCount txt Text Split new n r StringSplitOptions None Length
  • vb.net:查找字符串中字符串的位置?

    vb net 中是否使用 instr 来实现此目的 使用 String IndexOf http msdn microsoft com en us library system string indexof aspx http msdn m
  • 使用 VB.NET 覆盖文本文件中的特定行

    我需要执行以下操作 更改文本文件中的行 Path c this certain path 用这条线 Path c that other newer path 这些路径的长度肯定会不同 因此我需要替换引号中的内容 或者完全擦除该行并输入一个新
  • 循环内声明的变量在循环的每次迭代中保持值

    我无法确定这是一个错误还是一个功能 For i 0 To 4 Dim strTest As String If i 0 Then strTest test value End If Console WriteLine strTest Nex
  • 运行命令行进程并在该进程仍在运行时获取输出?

    如何运行命令行进程并在该进程仍在运行时获取输出 我的意思是使用自己的进度条运行 CLI 进程 可执行文件本身需要很长时间才能完成操作 所以我想从自己的进程中获取进度信息来显示我的应用程序中的进度 否则我不这样做在进程完成之前没有任何信息来显
  • dotNet:有没有办法在 UI 线程上执行 Join 语句?

    我正在编写一个简单的线程应用程序 当单击开始按钮时 应用程序禁用此按钮 运行 5 个线程 只需进行 For 迭代并更新 5 个进度条 最后一个线程正在等待线程结束 以重新启用我的开始按钮 问题 用户看到按钮在进度条达到 100 之前已启用

随机推荐