[已解决] 如何区分 回车键 和小键盘上的 回车键
本帖最后由 yhxhappy 于 2019-6-19 08:47 编辑各位好,
我要写一个测试键盘的工具,要求响应所有按键。经测试发现无法区分大键盘区的回车键与小键盘区的回车键。
这两个键按下时发送的代码是一样的。
本帖最后由 yhxhappy 于 2019-6-18 21:24 编辑
不知道为什么传代码一直失败
本帖最后由 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 afan 发表于 2019-6-18 21:54
刚写的,XP测试ok,其它未测~
可以了,谢谢Afan
页:
[1]