ich will für Terraria ein kleines Script schreiben, welches die Tastatureingaben modifiziert an das aktive Fenster weitergibt. Mal gegoogelt und auf Keyboard Hooks gestoßen.
Naja, ich komm mit einem Code, den ich gerne verstehen würde um auch die Keybord Hooks zu verstehen, nicht zurecht.
Code:
#include <WinAPI.au3>
#include <WindowsConstants.au3>
HotKeySet('{F3}', '_EXIT')
Dim $hHook, $hFunc
Dim $pFunc
$hFunc = DllCallbackRegister('_KeyboardHook', 'long', 'int;wparam;lparam')
$pFunc = DllCallbackGetPtr($hFunc)
$hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, $pFunc, _WinAPI_GetModuleHandle(0))
While 1
Sleep(15)
WEnd
Func _EXIT()
Exit
EndFunc
Func OnAutoItExit()
_WinAPI_UnhookWindowsHookEx($hHook)
DllCallbackFree($hFunc)
EndFunc
Func _KeyboardHook($iCode, $iwParam, $ilParam)
Local $tKHS = DllStructCreate($tagKBDLLHOOKSTRUCT, $ilParam)
Local $vkCode, $iScanCode
If $iCode > -1 Then
$vkCode = DllStructGetData($tKHS, 'vkCode')
If $iwParam = $WM_SYSKEYUP Then
Switch $vkCode
Case 0x30 To 0x39
ConsoleWrite($vkCode & @LF)
_keybd_event(0x12, 2) ; 2 = KEYEVENTF_KEYUP
_keybd_event($vkCode+0x30, 0)
Return 1
EndSwitch
EndIf
EndIf
Return _WinAPI_CallNextHookEx($hHook, $iCode, $iwParam, $ilParam)
EndFunc
Func _keybd_event($bvkCode, $Flag)
DllCall('user32.dll', 'int', 'keybd_event', 'byte', $bvkCode, 'byte', 0, 'uint', $Flag, 'ptr', 0)
EndFunc; _keybd_event

Wenn sich jemand damit auskennst, könnte sich jemand die Mühe machen hinter jede Zeile eine Erklärung zu schreiben? Also einiges versteh ich ja, aber die Funktionen _KeyboardHook und _keybd_event nicht. Wann werden die denn aufgerufen? Geschieht das irgendwie vom System her?
Hab natürlich auch schon die Hilfen zu den einzelnen DLL Funktionen gelesen, damit komm ich eigentlich klar, ich muss die Parameter halt nachlesen.
Ich hoffe es erbarmt sich jemand.






