我的程序已经运行良好,我使用文本框来捕获条形码扫描仪输入。我的程序的目的是用于时间和出勤监控,问题是我想阻止用户使用键盘输入他们的 ID,因为这会使条形码扫描仪和带有条形码的 ID 毫无用处。
*我已经尝试从计算机上卸下键盘并且确实有效,但不得按要求卸下键盘...
选项1:
获取连接到串行端口(由 COM 端口读取的原始串行设备)的条形码扫描仪。由于大多数条形码扫描仪模拟键盘敲击,因此无法直接区分条形码扫描仪输入和键盘输入(请参阅下一个选项)而不进入低级别(请参阅上次更新)。
一个连接到串行端口(或通过 USB 模拟一个,因为串行端口不再那么常见)可以让您完全控制输入的来源。
选项2:
按时间计算输入的字符数。与打字相比,条形码扫描仪注入序列(行)的速度相当快。通过计算按键次数来测量文本框中使用的时间(使用 CR+LF 作为测量点,因为这些也是由扫描仪发送的)可以为您提供一种区分是否有人正在打字的方法(除非有一个打字速度很快的人)如 f) 或内容被注入。如果超时,则拒绝/清除输入。
此外,除了时间测量之外,条形码的校验和(如果您使用包含该校验和的校验和)还可用于进行额外的验证。
(您可以通过覆盖 ctrl + v 来检测粘贴,如下一个选项所示)。
选项 3:
组合选项 2,但不是在文本框中进行测量,而是点击 ProcessCmdKey() 函数(通过覆盖它)并在文本框具有焦点时进行测量。这样,您可以首先缓冲输入,测量时间,如果在设置的超时值内,则将该行插入文本框。
Update:
选项 4:非技术方法 -
可用性改进:在视觉上非常清楚地表明条形码必须使用扫描仪输入而不是键入。我将其作为一个选项包括在内,因为它很简单,并且如果正确的话也有效(不幸的是,没有正确答案)。
接触过的可能包括 f.ex。文本框中的水印(“不要输入,扫描!”或类似的内容)。给它不同的颜色、边框、大小等,以将其与普通文本框区分开来,并提供关联的帮助文本并随时可用,以提高清晰度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)