Ich bin in der Lage, numerische, alphabetische und sogar Return-Tastendrücke zu erhalten. Aber ich bin nicht in der Lage, Escape oder andere Funktionstasten wie Strg, Alt zu bekommen. Ist es möglich, es zu ändern, um auch diese Schlüssel zu erkennen?
Wenn Dinge wie Strg- und Alt-Tasten, dies virtuelle Tastenanschläge sind, sind sie Ergänzungen zu Zeichen. Sie müssen verwenden ReadConsoleInput. Aber Sie werden alles bekommen, die Maus auch. Sie müssen also wirklich eine Struktur aus dem Aufruf filtern und zurückgeben, damit Sie wissen, ob es sich um Strg-A Alt-A handelt. Filtern Sie Wiederholungen, wenn Sie sie nicht möchten.
Dies kann Arbeit erfordern, weiß nicht, was Sie suchen …
Zweck Die Funktion führt einige Berechnungen durch, deren Fortschritt dem Benutzer auf der Konsole angezeigt wird. Wenn alles fertig ist, möchte der Benutzer von der Funktion zurückkehren. Sie tut das, indem sie eine beliebige Taste drückt. In allen meinen anderen Anwendungen kann der Benutzer mit der Esc-Taste zurückkehren, also ist es schön, dass das auch hier funktioniert.
Es funktioniert, indem es die Konsole zuweist und Handles für die Ausgabe von und die Eingabe in die Konsole setzt. Flags OKflg_out und OKflg_in werden gesetzt, um die Operationen am Ende zu verifizieren. Die for (; ;)-Schleife nach der Meldung „Press any key.“ an den Benutzer endet, wenn der Benutzer eine Taste drückt.
Der numerische Code für die gedrückte Taste ist (((irec.Event).KeyEvent).uChar).AsciiChar, wird hier aber nicht verwendet. Es könnte natürlich als Rückgabecode verwendet werden, um die folgenden Aktionen in der aufrufenden Funktion festzulegen.
Eine Nur-Code-Antwort ist nicht von hoher Qualität. Obwohl dieser Code nützlich sein kann, können Sie ihn verbessern, indem Sie sagen, warum er funktioniert, wie er funktioniert, wann er verwendet werden sollte und welche Einschränkungen er hat. Bitte bearbeiten Sie Ihre Antwort, um eine Erklärung und einen Link zu relevanter Dokumentation einzufügen.
– Muhammad Mohsin Khan
3. April um 22:36 Uhr
Sie haben viele Möglichkeiten, die Tastatureingaben zu erhalten
Diese sind für GUI-Anwendungen, nicht für Konsolenanwendungen. Die Ergebnisse, die Sie erhalten werden, werden nicht mit dem Status des Konsoleneingabepuffers synchronisiert.
– Matteo Italien
18. Dezember 2016 um 21:55 Uhr
Sie werden Zeichen erhalten, Sie werden sie nicht mit den Konsoleneingabefunktionen, Win32 stdin und CRT stdin (und mit GetAsyncKeyState Sie werden sie nicht einmal mit der Eingabewarteschlange des Threads synchronisieren). Dies hat subtile Implikationen, also sollten Sie dieses Zeug vermeiden, es sei denn, Sie verstehen es vollständig.
– Matteo Italien
12. Januar 2017 um 16:29 Uhr
10126600cookie-checkTastendruck in der Windows-Konsole abrufenyes