现在有一个项目是这样的 : 
只允许工作人员用扫瞄枪扫瞄序列号 , 不允许工作人员手动输入字母或者数字。 我在google 上找了很多方法 ,用钩子可以屏蔽从键盘上输入字母或者数字 。    但是后来发现 :  扫瞄枪也不能正常用了 ,把扫瞄枪里扫瞄的序列号也给屏蔽了 ,  这个问题怎么办啊?  急

解决方案 »

  1.   

    就是键盘拆了也不行吧,因为windows附件里还有个软键盘的。
    不知道你这个是扫描了是录入到哪里的,打个比方,假如扫描后首先会显示到你的程序的文本框中,然后点击什么确定按钮后存入数据库或者打印什么操作的。那么把那个文本框设置为lock状态禁止键盘输入不就行了吗?如果那个程序不是你的那么另当别论了。
      

  2.   

    你的录入序列号的是TextBox控件吗?如果是试一试把它的Locked属性设置为true试一试。这样可以屏蔽掉TextBox控件的键盘录入。但可以通过代码(比如你的扫描录入)输入信息
      

  3.   

    将textbox的enabled属性设为false就可以屏蔽键盘输入了~
    或者改用Label控件
    再通过端口判断将扫描枪扫出来的信息显示在textbox或label控件中就可以了
      

  4.   

    键盘输入有WM_CHAR消息的,扫描枪的输入一定会有他特有的消息。
      

  5.   

    http://www.cnblogs.com/lance2088/archive/2008/06/18/1224591.html
    参见这个代码。扫描枪就是个键盘,不会有什么特殊的端口,特征码之类的,不过每个设备肯定有自己的keyboard handle。
      

  6.   

    http://download.csdn.net/source/1218702
    大同小异,免费的资源
      

  7.   

    扫描枪扫描的信息不会触发文本框的keypress事件吧?
    在输入框的keypress事件中把输入框清空
    或者在输入框的keyup事件中拦截输入字符
    Option Explicit
    Dim a As StringPrivate Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
    a = Text1.Text
    End SubPrivate Sub Text1_KeyUp(KeyAscii As Integer)
    Text1.Text = a
    End Sub
      

  8.   

    KeyBoard Global HOOK && KeyBoard Events.OKOKJOK
      

  9.   

    推荐使用键盘钩子:
    http://topic.csdn.net/u/20110307/14/dff9d358-adfc-4871-a053-f698f28487fc.html
      

  10.   

    在文本框中不论你按什么字母或者数字键,文本框内容不变(假如扫描枪已经有输入的话比较适合)。19楼代码错误了。
    Option Explicit
    Dim s As StringPrivate Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
    s = Text1.Text
    End SubPrivate Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
    Text1.Text = s
    End Sub
    如果在keyup事件中利用KeyCode,还可以对输入按键进行判断开放特例
      

  11.   

    补充:
    楼主分给的太少了,我这里也有扫描枪,不知道楼主的是PS/2的还是USB得接口,我觉得楼主的问题不是太难,不需要扫描钩子因为嵌入钩子的话可能造成EDIT屏蔽扫描数据。刚上面我说了,直接判断设备ID即可!如果是扫描枪=TRUE.如果是键盘=FALSE。
      

  12.   

    可凭时间判断,还要屏蔽control + v(粘贴键)。