Also, ich hab jetzt mal etwas mit der Funktion GetAsyncKeyState ausprobiert und zum test schnell ein programm gemacht das nur einen timer enthält der alle 30ms folgende prozedur aufruft (ME ist ein memo):
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ME.Lines[0] := IntToStr(GetAsyncKeyState(VK_LEFT)) ;
ME.Lines[1] := IntToStr(GetAsyncKeyState(VK_RIGHT)) ;
ME.Lines[2] := IntToStr(GetAsyncKeyState(VK_UP)) ;
ME.Lines[3] := IntToStr(GetAsyncKeyState(VK_DOWN)) ;
ME.Lines[4] := IntToStr(GetAsyncKeyState(VK_Space)) ;
ME.Lines[5] := IntToStr(GetAsyncKeyState($44)) ;
ME.Lines[6] := IntToStr(GetAsyncKeyState($41)) ;
ME.Lines[7] := IntToStr(GetAsyncKeyState($53)) ;
ME.Lines[8] := IntToStr(GetAsyncKeyState($57)) ;
ME.Lines[9] := IntToStr(GetAsyncKeyState($51)) ;
end;
Die 5 letzten tasten sind W, A, S, D und Q.
Die Ausgabe sieht (höchstens!) Wie folgt aus (Auch wenn ich alle abgefragten tasten gleichzeitig drücke):
0
-32768
0
-32768
0
-32768
0
-32768
-32768
-32768
Also maximal 6 tasten, wenns gut klappt, manche reihenfolgen bringen aber auch noch weniger tasten die gedrückt werden zum ergebnis.