我要实现当某个键盘上的字母键被按下时自动记数+1,在label1上显示出来。
但因为是通宵搞,头都搞晕了,而且今天就要交了,请各位大虾帮忙看下!
(代码写的不是很好,请不要见笑。:)
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vkey As Long) As Integer
Private Function MyHotKey(vKeyCode) As Boolean
MyHotKey = ((GetAsyncKeyState(vKeyCode) < 0))
End FunctionPrivate Sub Form_Load()
Dim n As Integer
n = 0
Label1.Caption = n
End SubPrivate Sub Timer1_Timer()
If MyHotKey(vbKeyA) Or MyHotKey(vbKeyB) Or MyHotKey(vbKeyC) Or MyHotKey(vbKeyD) Or MyHotKey(vbKeyE) Or MyHotKey(vbKeyF) Or MyHotKey(vbKeyG) Or MyHotKey(vbKeyH) Or MyHotKey(vbKeyI) Or MyHotKey(vbKeyJ) Or MyHotKey(vbKeyK) Or MyHotKey(vbKeyL) Or MyHotKey(vbKeyM) Or MyHotKey(vbKeyN) Or MyHotKey(vbKeyO) Or MyHotKey(vbKeyP) Or MyHotKey(vbKeyQ) Or MyHotKey(vbKeyR) Or MyHotKey(vbKeyS) Or MyHotKey(vbKeyT) Or MyHotKey(vbKeyU) Or MyHotKey(vbKeyV) Or MyHotKey(vbKeyW) Or MyHotKey(vbKeyX) Or MyHotKey(vbKeyY) Or MyHotKey(vbKeyZ) Then ‘这一段写的比较蠢一点,哈哈
n = n + 1
Label1.Caption = n
End If
Timer1.Enabled = False
End SubPrivate Sub Timer2_Timer()
Timer1.Enabled = True
End Sub

解决方案 »

  1.   

    晕,要怎么复杂吗?直接用KeyPress事件就OK了。但是必须先设置Form窗体的KeyPrevious置为TRUE窗体级别变量Ct保存次数。
    Private Ct as Integer
    Private Sub Form_KeyPress(KeyAscii As Integer)
        if (Keyascii >= asc("A") and Keyascii <= asc("Z")) Or _
           (Keyascii >= asc("a") and Keyascii <= asc("z")) Then
            Ct = Ct + 1
        end if
        ’要显示就一句话: Me.Label1.Caption = Cstr(Ct)
    End Sub
    只要按任意的英文字母键就可以加计数了。
      

  2.   

    老大,不是啊,是系统级的监控,是要在form失去焦点以后还能监控。
    再想想,帮帮忙啊!
      

  3.   

    Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vkey As Long) As IntegerPrivate Function MyHotKey(vKeyCode) As Boolean
    MyHotKey = ((GetAsyncKeyState(vKeyCode) < 0))
    End FunctionPrivate Sub Form_Load()
        Label1.Caption = 0
    End SubPrivate Sub Timer1_Timer()
    Dim KeyASC As Integer
    For KeyASC = asc("A") To KeyASC = asc("Z")
         If MyHotKey(KeyASC) = True Then    
             Label1.Caption = CInt(Label1.Caption) + 1
             'Exit For'如果同时按几个键,也只计算一次
         End If
    Next KeyASC 
    End Sub'Timer2应该是不需要的
      

  4.   

    我试了一下,不行啊。。
    那TIMER1的INTERVAL该设为多少呢?
    求求junki(『.NET技术争霸天下』)你这位大虾了....
    55555....
    我下午就要交了,帮人帮到底嘛,可不可以帮我调试一下,我这里还是不行啊.....
      

  5.   

    键盘HOOK。很简单的,网上找找,有源代码。
      

  6.   

    用WH_KEYBOARD_LL钩子,这个全局钩子不需要dll