为什么小键盘0到10不能正确显示?
标准计算机键盘(101/102),我用低级键盘钩子获取右边小键盘的0到10的值为什么不能正确显示在窗口?而实际显示的是 'abcdefghi
左边键盘0~10十六进制是:&H30 To &H39
A~Z十六进制是: &H41 To &H5A
小键盘十六进制是如下代码中所示(&H60 To &H69),不知道有没有错?实际结果显示在窗体里面form.txtSS.Text的不是0-10!而是 'abcdefghi!
Public Function LowLevelKeyboardProc(ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim p As PKBDLLHOOKSTRUCT
Dim strKey As String
If ncode = HC_ACTION Then
Select Case wParam
Case WM_KEYDOWN
CopyMemory p, ByVal lParam, Len(p)
If p.VKCode > 0 And p.VKCode < &H92 Then
Select Case p.VKCode
Case VK_RETURN
'strKey = strKey & "{Return} "
Case &H60 To &H69, &H30 To &H39, &H41 To &H5A 'oct 八进制 dec 十进制 Hex 十六进制
strKey = strKey & Chr(p.VKCode)
Case Else
'do nothing
End Select
form.txtSS.Text = form.txtSS.Text & strKey
End If
Case Else
'do nothing
End Select
End If
CallNextHookEx WH_KEYBOARD_LL, ncode, wParam, lParam
If p.VKCode = VK_RETURN Then
strSN = Trim(form.txtSS)
form.txtSS.Text = " "
End If
End Function
[解决办法]
//小键盘十六进制是如下代码中所示(&H60 To &H69),不知道有没有错?
没错
//实际结果显示在窗体里面form.txtSS.Text的不是0-10!而是 'abcdefghi!
很正常,你程序中显示的是 Chr(p.VKCode), Chr(&H60)-Chr(&H69),可不就是`abcdefghi吗