他拿的是一个远距离的IC卡读卡器,他的这个设备通过计算机的键盘口与电脑相连.先在电脑上任意打开一种文本编辑器(只要是能接收键盘输入的就可以),然后每刷一次卡,
文本编辑器就会有一串数据写入.我想他刷一次卡就相当于我们从键盘输入一串数据.所以在文本编辑器里就会有数据写入.我现在的任务就是编写程序实时的捕捉传输入过来的数据.程序在运行的时候实时捕获数据,得到数据据后马上做出相应的反应.
我不可能在软件的主界面上放一个文本框来接收传输入过来的数据,那太难看了.最好是这串数据一来,马上付给一个变量然后处理起来就方便了.
大家有什么好的办法吗?请指教!!!!!!

解决方案 »

  1.   

    把文本框隐藏起来,在文本框的change事件中判断得到的文本如果已经达到规定的长度则将文本框的内容赋值给一个变量,然后将文本框清空等待下次接受数据
      

  2.   

    文本框隐藏有很多方法,比如text1.top=-1000:text1.left=-1000
      

  3.   

    中间层过滤驱动过滤来自串口设备的IRP_READ/IRP_WRITE
    处理IRP.SYSTEMBUFFER里的数据应用程序通过DEVICEIOCTL与驱动通讯你这个东西最高层也需要在FS一层处理
    到了应用层,处理就麻烦多了
    光判断当前能够接受输入的活动窗口就很烦人
    而且你说你任何字处理软件,那么应用层职能通过进程名来判断
    难度可想而知
      

  4.   

    大家的方法很多,可是就是没有能马上解决问题的方法.
    好像昨晚中国队机会很多,可是就是没有解决问题的射门(最后还好点球取胜)
    大家如果有什么好方法,请说祥细点吧.
    用串口通讯,我也想呀,可是我不知道键盘口是个什么口呀.有谁能告诉我用mscomm控件来监测哪个端口吗?(com1,com2,com3,com4??????).
      

  5.   

    和磁卡 光电卡  条形码差不多的   我现在电脑边上就接了2个这样的设备既然是键盘接口的, 相当于键盘输入字符  老老实实的处理KeyPress事件了
      

  6.   

    用文本框来接收是不可能的,我不可能保证文本框始终是焦点,程序的焦点肯定会随着程序的需要而移动.
    倒是楼上说的有些道理,我在界面中每个可能成为焦点的控件中,都加一个keypress事件,做相应技术处理实现的可能性应该是比较大吧,我试试.
    但我还是想寻求一个更好的办法.......
      

  7.   


    DDK的例子
    自己也不看
    就是要结果
      

  8.   

    不好处理,因为ID卡和键盘都在一根线上,程序凭什么判断这是键盘敲的,还是ID卡刷的呢?
      

  9.   

    除非你换用串口或者USB接口的读卡器  用键盘接口的基本上是很难的
      

  10.   

    每个控件都处理KeyPress?太麻烦了吧
    用子类,处理WM_CHAR消息
    多方便阿
      

  11.   

    hook键盘输入吧。
    不过要用其他语言写用来hook的dll
      

  12.   

    那个IC刷卡器是模拟键盘行为的.所以它和键盘共一个接口,如果刷卡的时候,你也在敲键盘,那数据就不正确了,它本来就不难,本身窗口就支持获得键盘事件.keydown事件可以完全捕捉.
    多数超市都是类似的刷卡器,你可以看到收银员专门打开一个窗口进行刷卡,重要的是她不会在刷卡过程中敲击键盘.
      

  13.   

    使用键盘钩子钩子得到键盘的输入,再使用FINDWINDOW编历打开的窗口,找到WORD、NOTPAD或者WRITER等程序,在使用SENDMESSAGE,或SENDKEY将得到的数据发送到该窗口
      

  14.   

    Text1.left=-8000 不就行了 
    用的着那么麻烦嘛...
      

  15.   

    同意使用钩子,用DirextInput也可以,不过有点繁琐。
      

  16.   

    一个想法,挂上一个 PostMessage 钩子,然后拦截 WM_CHAR。
      

  17.   

    我觉得是一个不难的问题啊,就像是扫码枪一样,只要用键盘的Key_press捕捉就行了!
    应该是挺简单的一个问题了~~~~~~~~~~
      

  18.   

    输入框有焦点的话,他自动会写入啊,你还处理什么啊没输入框,你就处理Form_KeyPress事件吧,不过你要将form的kepreview属性设置为true
      

  19.   

    没那么复杂,但必须有接口。
    最简单的方法是写一个类,类里面有代码不断地扫描该端口,有数据进来即进行处理--别忘了在适当的地方加 doevents,否则你的程序会表现为好象死机了一样。
    最佳是用事件触发,监测该端口,当该端口有数据进入时再触发你的处理程序,因为不断地扫描该端口要浪费不少 CPU 时间。可惜几年前的源代码找不到了,不然可以给你个现成的例子。
      

  20.   

    轉換接口最好.買一個轉換線,將其轉換成串口.然後操作串口數據.使用windows api來操作比較好.
      

  21.   

    使用文本框没什么问题的,我做的一个刷卡系统也是这样处理,把文本框"移"到看不见的地方不就是隐藏了吗?
    放一个TIMER,每0.5秒(甚至更短)将焦点置于文本框不就解决了焦点问题了吗?
    然后在文本框的CHANGE事件中,接收到就检查其长度是否要接收信息的固定长度,不是就清空,是就处理然后清空.你说的远程倒有点意思,是怎么远程法?红外?蓝牙?
      

  22.   

    晕啊~~这类产品都提供开发接口的。如果没有,你可以hook键盘事件来实现