1)现在做的系统中,主界面的光标必须集中在TEXT1上(方便刷条形码及输入信息)
    2)现在需要用键盘(一般的接触式键盘)上的某个键(比如Q键)拉出两根线直接接到计数器的信号端(电压小于5V的一个通断信号)用来计数,电信号通断一次,在数据库中累加一次.
   
   由于光标在text1上,导致了当电信号通断一次的时候,字母Q就输入到TEXT1中了,影响的正常的工作,所以我想寻求一个使得两者互不干扰的方法,即不会让text1里面填入字母,又能触发VB的某个事件,使得计数能正常工作~~   听说API可以监视键盘,所以想来问下下~~~大家帮忙看下哈

解决方案 »

  1.   

    ps:其中的字母大约有5-7个键,而我在TEXT1中输入包含4种类型的信息:A0000(A####),B0000(B####),C0000(C####)和000(###)
      

  2.   

    第一个简单 
    Private Sub Text1_LostFocus()
    Text1.SetFocus
    End Sub第二个
    text1作为公用输入端   收到长度超过多少的字符判断为条码   短的为计数器
      

  3.   


    ....不是两个问题...我是想说的是 光标在text1的情况下...如何让有些按键既能触发VB事件,又不会影响TEXT1,也不会在TEXT1中输入字符啊什么的...
      

  4.   

    我自己开小店的时候做过个POS系统   
    为了保证每次条码都能识别出来  
    就是所有命令集中在一个TEXTbox中   
    比如输入EJ 回车 就是修改价格  你可以KEYPRESS事件中 收到 某个特殊键 使得KEYASCII=0 就可以了
      

  5.   

    不是很明白你的意思
    【即不会让text1里面填入字母,又能触发VB的某个事件】1)现在做的系统中,主界面的光标必须集中在TEXT1上(方便刷条形码及输入信息) 
    Private Sub Form_Activate()
         text1.setfocus
    End SubPrivate Sub Text1_LostFocus() 
         Text1.SetFocus 
    End Sub
    2)
    Private Sub Text1_KeyPress(KeyAscii As Integer)
         '事件触发
          '计数器累加一次
         '吃掉字母 Q Text1 不会输入这个字符
        If KeyAscii = 113 Then KeyAscii = 0   '113=Q
        
    End Sub
      

  6.   

    看来你的经理也不怎么懂,呵呵。做你的这个东西的需求更本不用什么单片机,就几个电阻和继电器就可以了。
    后面的就是程序问题,建议你看看并口通讯,然后看看WinIO的使用。简单得不能再简单了,无论是硬件还是
    软件上,几块钱就可以搞定的事,去改装键盘还麻烦。
      

  7.   

    那直接在文本框的KEYPRESS事件里吃了Q等几个键不就行了楼上已经有人给出方案了嘛.只要你接开关的几个键里没有ABC键就不会冲突了.
      

  8.   

    你可以参考一下这篇文章
    http://www.xbgk.com/Technique/TechListView.asp?Aid=4908
    程序部分参考一下可以了,不能用的,因为即使是VC,在Win2000以上的系统都不能直接读写硬件端口。
    如果要读写硬件端口需要开发驱动,所以你可以使用WinIO来读写端口,如果要下载WinIO,可以
    点击这里下载
    http://www.internals.com/utilities/winio.zip
      

  9.   

    我就直接按楼主的需求回答吧
    Public Const WH_KEYBOARD = 2
    Public Const VK_SHIFT = &H10
    Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
    Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
    Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
    Public hHook As Long
    Public Function KeyboardProc(ByVal idHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    if wParam=vbkeyQ then
    '处理
    else
    KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
    end if
    End Function
    '启动和卸载钩子就自己写了……