标准计算机键盘(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 StringIf 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 IfCallNextHookEx WH_KEYBOARD_LL, ncode, wParam, lParamIf p.VKCode = VK_RETURN Then
   strSN = Trim(form.txtSS)
   form.txtSS.Text = ""
End IfEnd Function

解决方案 »

  1.   

    //小键盘十六进制是如下代码中所示(&H60 To &H69),不知道有没有错?
    没错//实际结果显示在窗体里面form.txtSS.Text的不是0-10!而是'abcdefghi!很正常,你程序中显示的是 Chr(p.VKCode), Chr(&H60)-Chr(&H69),可不就是`abcdefghi吗
      

  2.   

    可是实际上我是想让他在标准键盘右边小键盘输入时显示是数字,而不是字母!比如输入:1     --->显示a
             2     --->显示b
          ...............
    应该如何做?
      

  3.   

    表面上看起来:

    Case &H60 To &H69, &H30 To &H39, &H41 To &H5A 'oct 八进制 dec 十进制 Hex 十六进制
    strKey = strKey & Chr(p.VKCode)
    改成
    Case &H60 To &H69
    strKey = strKey & Chr(p.VKCode-48)
    Case &H30 To &H39, &H41 To &H5A
    strKey = strKey & Chr(p.VKCode)就可以
    实际情况是你还应该判断一下shift的状态