为什么按方向键显示4个
做一个后台运行的程序,把在键盘上按下的所有键都记录下来。按一些字母键还可以只显示一个,可按方向键时,显示4个(我是把键盘上按下的所有键记录在richtext中内)uparrowuparrowuparrowuparrow,可我只按了一下键盘啊。
部分代码如下:
Public Function EnableKBDHook()
If hnexthookproc <> 0 Then
Exit Function
End If
hnexthookproc = SetWindowsHookEx(WH_KEYBOARD, AddressOf MyKBHFunc, App.hInstance, 0)
If hnexthookproc <> 0 Then
EnableKBDHook = hnexthookproc
End If
End Function
Public Function MyKBHFunc(ByVal iCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
MyKBHFunc = 0 '信息要处理
If iCode < 0 Then
MyKBHFunc = CallNextHookEx(hnexthookproc, iCode, wParam, lParam)
Exit Function
End If
If Not ConvChar(wParam) Then
Call UnHookKBD
frmwin.Show
Exit Function
End If
Call CallNextHookEx(hnexthookproc, iCode, wParam, lParam)
End Function
Private Function ConvChar(ByVal vData As Long) As Boolean
ConvChar = True
Dim KeyResult As Integer
Select Case vData
Case 107 '小键盘+
frmwin.RText.Text = frmwin.RText.Text + "+"
Case 109 '小键盘—
frmwin.RText.Text = frmwin.RText.Text & "-"
Case 106 '小键盘*
frmwin.RText.Text = frmwin.RText.Text & "*"
Case 111 '小键盘/
frmwin.RText.Text = frmwin.RText.Text & "/"
Case 37
frmwin.RText.Text = frmwin.RText.Text & "leftarrow"
Case 38
frmwin.RText.Text = frmwin.RText.Text & "uparrow"
Case 39
frmwin.RText.Text = frmwin.RText.Text & "rightarrow"
Case 40
frmwin.RText.Text = frmwin.RText.Text & "downarrow"
end select
end function
高手帮帮忙,解决后马上结贴。