禁止手Key

shenhj01 2010-08-12 01:45:47
VB中如何禁止手Key条码,只能用Scan条码?
...全文
188 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
of123 2010-08-17
  • 打赏
  • 举报
回复

有串口、键盘口和 USB 口。但 USB 口实际上是虚拟 USB 键盘。

嗷嗷叫的老马 2010-08-17
  • 打赏
  • 举报
回复
扫描枪这种东西难道除了模拟按键,就没有别的接口了么?

比如来个DLL整个回调啥的........
咸清 2010-08-16
  • 打赏
  • 举报
回复
当时我们做的多条件输入,然后检索,就是这么办的
扫描枪有设置,扫描完后加回车。然后就可以在 KeyPress(KeyAscii As Integer) 里判断是否输入完毕。然后判断时间,然后……
咸清 2010-08-16
  • 打赏
  • 举报
回复
跟楼上的思路一样
呵呵
赵4老师 2010-08-16
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 dingyanwei 的回复:]
我没用过扫描枪,但我用过键盘

据lz点滴信息分析,应该是扫描枪扫描的内容会以键盘录入字符方式进入text
所以应该很难分辨是键盘输入还是scan的

不过我觉得键盘输入条码肯定是有过程的,也就是肯定1个字符一个字符的输入吧,
而scan也是1个1个输入吗?

如果都是1个1个输入,那么scan肯定极快的完成,也许用不到500毫秒,但你用键盘再快也要几秒钟才行吧
所以,我的解决方……
[/Quote]
思路非常好!赞!
咸清 2010-08-16
  • 打赏
  • 举报
回复
我们以前做过,当时是做的手工输入短号,扫描枪扫长的条码流水号,两个没有直接关系
解决方案是用Timer 判断整个输入的时间。手工不会0.001秒输完的。
dingyanwei 2010-08-16
  • 打赏
  • 举报
回复
我没用过扫描枪,但我用过键盘

据lz点滴信息分析,应该是扫描枪扫描的内容会以键盘录入字符方式进入text
所以应该很难分辨是键盘输入还是scan的

不过我觉得键盘输入条码肯定是有过程的,也就是肯定1个字符一个字符的输入吧,
而scan也是1个1个输入吗?

如果都是1个1个输入,那么scan肯定极快的完成,也许用不到500毫秒,但你用键盘再快也要几秒钟才行吧
所以,我的解决方法就很简单了,如果text中长度为10位的条码从1到10位耗时超过1秒,就清空,肯定是键盘录入的,反之留着。

不知道我说明白了吗?
of123 2010-08-16
  • 打赏
  • 举报
回复
jhone99 的方法也可以试试。

我手头没有条码枪。楼主试试:

用 Text1 将 Text2 遮住。Text2 设置焦点。Text1 锁住。

Private Sub Text2_Change()
Text1.Text = Text2.Text
End Sub
of123 2010-08-16
  • 打赏
  • 举报
回复

选用串口的条码枪,显示用 Label 。
舉杯邀明月 2010-08-16
  • 打赏
  • 举报
回复
有两句忘记删除了: ^_^

Cls

Print lNow, lNow - lInTime
舉杯邀明月 2010-08-16
  • 打赏
  • 举报
回复
Private Const MAXDELAY  As Long = 1000      '测试用,按键时间间隔小于1秒
'Private Const MAXDELAY As Long = 20 '实际使用
Private lInFlag&, lInTime&

Private Sub Form_Load()
lInFlag = 0
lInTime = 0
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
' 按回车表示输入完毕
Dim lNow&
If (KeyAscii = 13) Then
MsgBox "刚才输入的是:" & Text1.Text, 64
Text1.Text = ""
lInFlag = 0
End If
Cls
lNow = Timer() * 1000
Print lNow, lNow - lInTime
If (lInFlag = 0) Then
lInTime = lNow
lInFlag = 1: Exit Sub
End If
If (lNow - lInTime > MAXDELAY) Then
lInFlag = 0: Text1.Text = ""
Else
lInTime = lNow
lInFlag = 1
End If
End Sub

舉杯邀明月 2010-08-16
  • 打赏
  • 举报
回复
据说多数扫描枪是模拟按键的。所以一般情况下能扫描,就能手工输入。
嗷嗷叫的老马 2010-08-16
  • 打赏
  • 举报
回复
顶顶.

这个问题的关键,在于扫描枪是如何将内容输入到文本框的.

楼主需要先将这个条件说清楚.

不然大家为你解答的话有极大的可能是做无用功,所以都无法回答,只好开点玩笑轻松轻松了.....
jhone99 2010-08-16
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 hehaiyi2008 的回复:]


已经试验过了,不行!
[/Quote]

你是怎么试验的?

我测试就没有问题

加控件text1、text2
text1设locked=true
text2模拟扫描枪,程序
Private Sub Text2_Change()
Text1.Text = Text2.Text
End Sub

测试text1不能输入
text2输入时text1会跟随变化
shenhj01 2010-08-13
  • 打赏
  • 举报
回复
拜托大家说正事啊!!!!!!!!!!!!!!!!
游子 2010-08-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jhone99 的回复:]
把按键下面涂上胶水,让按键失灵
[/Quote]
强烈支持。。。
shenhj01 2010-08-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jhone99 的回复:]
textbox也可以
设locked为true
[/Quote]
这个方法键盘是输不进去,但是扫描枪也输不进去啊
hehaiyi2008 2010-08-13
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 jhone99 的回复:]

引用 11 楼 shenhj01 的回复:
引用 10 楼 jhone99 的回复:
textbox也可以
设locked为true

这个方法键盘是输不进去,但是扫描枪也输不进去啊


textbox也可以
设locked为true

只是不接受键盘输入
程序里textbox= 可以输入
[/Quote]

已经试验过了,不行!
hehaiyi2008 2010-08-13
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 jhone99 的回复:]

引用 11 楼 shenhj01 的回复:
引用 10 楼 jhone99 的回复:
textbox也可以
设locked为true

这个方法键盘是输不进去,但是扫描枪也输不进去啊


textbox也可以
设locked为true

只是不接受键盘输入
程序里textbox= 可以输入
[/Quote]
应该不行吧
jhone99 2010-08-13
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 shenhj01 的回复:]
引用 10 楼 jhone99 的回复:
textbox也可以
设locked为true

这个方法键盘是输不进去,但是扫描枪也输不进去啊
[/Quote]

textbox也可以
设locked为true

只是不接受键盘输入
程序里textbox= 可以输入
加载更多回复(11)

7,764

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧