[AUTOIT] Thay thế phím liệt bằng phím khác trên bàn phím

 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

Mới hơn Cũ hơn