为什么小键盘0到10不能正确显示?

Celestica 2007-04-27 01:33:09
标准计算机键盘(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
...全文
353 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainstormmaster 2007-04-27
  • 打赏
  • 举报
回复
//小键盘十六进制是如下代码中所示(&H60 To &H69),不知道有没有错?
没错

//实际结果显示在窗体里面form.txtSS.Text的不是0-10!而是'abcdefghi!

很正常,你程序中显示的是 Chr(p.VKCode), Chr(&H60)-Chr(&H69),可不就是`abcdefghi吗
Celestica 2007-04-27
  • 打赏
  • 举报
回复
谢谢!
这就结贴!
rainstormmaster 2007-04-27
  • 打赏
  • 举报
回复
表面上看起来:

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的状态
Celestica 2007-04-27
  • 打赏
  • 举报
回复
可是实际上我是想让他在标准键盘右边小键盘输入时显示是数字,而不是字母!

比如输入:1 --->显示a
2 --->显示b
...............


应该如何做?

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧