Hallo!
Ich habe mir für ReadConsoleInput folgende Konstruktion gebastelt (ich führe nur die entscheidenden Zeilen auf und lassen den ganzen Funktions-Schleifen-zipzap weg):
[autoit]
Global Const $tagKEYEVENTREC = "bool bKeyDown;word wRepeatCount; word wVirtualKeyCode; word wVirtualScanCode; wchar UnicodeChar; dword dwKontrolKeyState"
Global Const $tagINPUT_RECORD = "long evtyp;" & $tagKEYEVENTREC
Local $tInp = DllStructCreate($tagINPUT_RECORD)
Local $result = DllCall("kernel32.dll", "bool", "ReadConsoleInput", "handle", $GLOBAL_hConsoleIn, "ptr", DllStructGetPtr($tInp), "dword", 1, "dword*", 0)
$Key_Event = DllStructGetData($tInp, 'evtyp')
If $Key_Event = 1 then $key = DllStructGetData($tInp, 'UnicodeChar')
Zugehörige Doku im MSDN:
ReadConsoleInput
INPUT_RECORD
KEY_EVENT_RECORD
Das funktioniert wunderbar (da ich auch nur KEY_EVENT_RECORDs auswerten muss) unter allem, was ich bis jetzt an 32 bit OS unter den Fingern hatte. Bei Win 8 64 bit allerdings passiert nur Müll. Ich kenne mich leider mit den Struct-Datentypen nicht so gut aus, um wirklich beurteilen zu können, welcher Typ im Struct möglicherweise Probleme macht.
Hier gibt's aber soviele wirklich super fitte Leute und ich hoffe, dass jemand kann mir da einen Tipp geben.
Schonmal danke im Vorhinein fürs Ansehen...
Lieber Gruß
Holger