问题的缘由是由于ID卡读卡器接入PC后被虚拟为一个键盘,刷卡时会在当前光标处录入卡号。拦截的目的是抓住刷卡读入的卡号后直接在后台处理。操作员可以继续其他的操作,如编辑Word,浏览网页,填写表格等。
读卡器无驱动,无开发包。
读卡器接入电脑后,从硬件设备中可以查看到有一个USB人工输入设备。尝试过处理USB的数据通讯,但程序识别不出来ID卡虚拟出来的这个设备。其他的U盘,鼠标都能识别出来。因此放弃了转而通过拦截这个指定设备的输入的办法,不知道是否可行。
请大虾们指点。

解决方案 »

  1.   

    应该有SDK接口函数, hook 拦截也需要产品技术资料.
      

  2.   

    最好还是用驱动程序来过滤,因为Windows Hook不能识别输入设备,所以不能区分读卡器输入还是键盘输入或是模拟输入。不过可以考虑从输入的字符、长度及输入速度来判断,不知道能否满足需求。
      

  3.   

    用Spy++跟踪一下读卡器产生的消息,看它有什么特点,比如特定的消息号,特定的数据格式,特定的发送者等等
    找到读卡器与键盘鼠标不同的特点,然后在Hook里对这些特点进行判断另外,键盘是一个一个键按,读卡器是不是也这样? 还是一次发送一连串信息? 也要在SPY++里观察一般标准的USB设备都是通过操作系统的USB 2.0标准设备驱动程序在驱动的,没有驱动它是不能正常工作的
      

  4.   

    可以拦截驱动,也要在SPY++里观察 
      

  5.   

    好像没办法的吧,对于程序来讲,它完全就是键盘输入了一段字符,然后按了个回车。要判断太困难了,hook 一直拦截的话会使系统不稳定,还是要刷卡的时候需要点下按钮或按下快捷键再刷卡好,虽然麻烦点,但误操作可以减少
      

  6.   

       驱动的确解决软件直接和硬件打交道一种好办法。如果LZ用钩子的话,要留意了Hook会降低系统的处理效率,而且会有一定的风险。
        学习了~