Hôm nay thằng em nó hỏi nhờ. Bàn phím nó bị liệt một phím. Mà dịch nên ở quê không mang đi thay được nên nhờ làm 1 script để thay thế phím [ thành phím số 0 cho nó
Lang thang trên autoitscript có đoạn script này và xào nấu lại cho phù hợp
#include <WinAPI.au3>
#Include <WindowsConstants.au3>
Global $sHexKeys, $sMouse, $sString, $hHookKeyboard, $pStub_KeyProc
global $SearchCode = 0xDB ; [ hoặc thay bằng Binary(219) code lấy ở đây https://keycode.info/
global $ReplaceCode = 0x60 ; 0x60 Binary(48)
HotKeySet("{F3}", "ExitNow") ;0x72
$pStub_KeyProc = DllCallbackRegister("_KeyProc", "int", "int;ptr;ptr")
$hHookKeyboard = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($pStub_KeyProc), _WinAPI_GetModuleHandle(0), 0)
While 1
Sleep(10)
WEnd
Func ExitNow()
Exit
EndFunc ;==>ExitNow
Func OnAutoITExit()
DllCallbackFree($pStub_KeyProc)
_WinAPI_UnhookWindowsHookEx($hHookKeyboard)
EndFunc ;==>OnAutoITExit
Func _KeyProc($nCode, $wParam, $lParam)
If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHookKeyboard, $nCode, $wParam, $lParam)
Local $KBDLLHOOKSTRUCT = DllStructCreate("dword vkCode;dword scanCode;dword flags;dword time;ptr dwExtraInfo", $lParam)
Local $vkCode = DllStructGetData($KBDLLHOOKSTRUCT, "vkCode")
Switch $wParam
Case $WM_KEYDOWN, $WM_SYSKEYDOWN
;~ ConsoleWrite(hex($vkCode))
;~ If $vkCode = 0x41 Then
If $vkCode = $SearchCode Then
_keybd_event($ReplaceCode, 0)
Return -1
EndIf
EndSwitch
Return _WinAPI_CallNextHookEx($hHookKeyboard, $nCode, $wParam, $lParam)
EndFunc ;==>_KeyProc
Func _keybd_event($vkCode, $Flag)
ConsoleWrite($vkCode)
DllCall('user32.dll', 'int', 'keybd_event', 'int', $vkCode, 'int', 0, 'int', $Flag, 'ptr', 0)
EndFunc; _keybd_event