找回密码
 加入
搜索
查看: 1491|回复: 3

[网络通信] [已解决] 如何区分 回车键 和小键盘上的 回车键

[复制链接]
发表于 2019-6-18 21:17:30 | 显示全部楼层 |阅读模式
本帖最后由 yhxhappy 于 2019-6-19 08:47 编辑

各位好,

我要写一个测试键盘的工具,要求响应所有按键。经测试发现无法区分大键盘区的回车键与小键盘区的回车键。
这两个键按下时发送的代码是一样的。
 楼主| 发表于 2019-6-18 21:19:05 | 显示全部楼层
本帖最后由 yhxhappy 于 2019-6-18 21:24 编辑

不知道为什么传代码一直失败
发表于 2019-6-18 21:54:17 | 显示全部楼层
本帖最后由 afan 于 2019-6-18 22:06 编辑

刚写的,XP测试ok,其它未测~
#include <WinAPI.au3>

OnAutoItExitRegister('_Exit')
Opt('GUIOnEventMode', 1)

Global $h_Key_Proc = DllCallbackRegister('_Key_Proc', 'long', 'int;wparam;lparam')
Global $h_Hook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($h_Key_Proc), _WinAPI_GetModuleHandle(0))

GUICreate('判断大小键盘回车键', 300, 200)
GUISetOnEvent(-3, '_Exit')
Global $iLb_Tip = GUICtrlCreateLabel('请按回车键测试', 50, 80, 200, 20)
GUISetState()

While 1
        Sleep(1000)
WEnd

Func _Key_Proc($nCode, $wParam, $lParam)
        Local $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
        If $nCode < 0 Then Return _WinAPI_CallNextHookEx($h_Hook, $nCode, $wParam, $lParam)

        If DllStructGetData($tKEYHOOKS, 'vkCode') = 13 Then
                Switch DllStructGetData($tKEYHOOKS, 'flags')
                        Case 0
                                GUICtrlSetData($iLb_Tip, '主键盘回车键按下')
                        Case 1
                                GUICtrlSetData($iLb_Tip, '小键盘回车键按下')
                        Case 0x80
                                GUICtrlSetData($iLb_Tip, '主键盘回车键弹起')
                        Case 0x81
                                GUICtrlSetData($iLb_Tip, '小键盘回车键弹起')
                EndSwitch
        EndIf

        Return _WinAPI_CallNextHookEx($h_Hook, $nCode, $wParam, $lParam)
EndFunc   ;==>_Key_Proc

Func _Exit()
        _WinAPI_UnhookWindowsHookEx($h_Hook)
        DllCallbackFree($h_Key_Proc)
        Exit
EndFunc   ;==>_Exit
 楼主| 发表于 2019-6-19 08:46:34 | 显示全部楼层
afan 发表于 2019-6-18 21:54
刚写的,XP测试ok,其它未测~

可以了,谢谢Afan
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 10:15 , Processed in 0.069414 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表