Freigeben über


Allgemeine Eingabe- und Ausgabefunktionen hohen Niveaus für die Konsole

Die Funktionen "ReadFile" und "WriteFile" oder die Funktionen "ReadConsole" und "WriteConsole" ermöglichen einer Anwendung das Lesen von Konsoleneingaben und das Schreiben der Konsolenausgabe als Zeichenstrom. ReadConsole und WriteConsole verhalten sich genau wie ReadFile und WriteFile , außer dass sie entweder als Breitzeichenfunktionen (in denen Textargumente Unicode verwenden müssen) oder als ANSI-Funktionen verwendet werden können (in denen Textargumente Zeichen aus dem Windows-Zeichensatz verwenden müssen). Anwendungen, die einen einzelnen Satz von Quellen Standard müssen, um Unicode oder den ANSI-Zeichensatz zu unterstützen, sollten ReadConsole und WriteConsole verwenden.

ReadConsole und WriteConsole können nur mit Konsolenziehpunkten verwendet werden; ReadFile und WriteFile können mit anderen Handles (z. B. Dateien oder Pipes) verwendet werden. ReadConsole und WriteConsole schlagen fehl, wenn sie mit einem Standardhandle verwendet wird, das umgeleitet wurde und kein Konsolenhandle mehr ist.

Um Tastatureingaben zu erhalten, kann ein Prozess ReadFile oder ReadConsole mit einem Handle für den Eingabepuffer der Konsole verwenden, oder es kann ReadFile verwenden, um Eingaben aus einer Datei oder einer Pipe zu lesen, wenn STDIN sie umgeleitet wurde. Diese Funktionen geben nur Tastaturereignisse zurück, die in ANSI- oder Unicode-Zeichen übersetzt werden können. Die Eingabe, die zurückgegeben werden kann, umfasst Kombinationen von Steuerelementtasten. Die Funktionen geben keine Tastaturereignisse zurück, die die Funktionstasten oder Pfeiltasten betreffen. Eingabeereignisse, die durch Maus-, Fenster-, Fokus- oder Menüeingaben generiert werden, werden nicht Karte.

Wenn der Zeileneingabemodus aktiviert ist (Standardmodus), kehren ReadFile und ReadConsole erst zur aufrufenden Anwendung zurück, wenn die EINGABETASTE gedrückt wird. Wenn der Zeileneingabemodus deaktiviert ist, werden die Funktionen erst zurückgegeben, wenn mindestens ein Zeichen verfügbar ist. In beiden Modus werden alle verfügbaren Zeichen gelesen, bis entweder keine weiteren Tasten verfügbar sind oder die angegebene Anzahl von Zeichen gelesen wurde. Ungelesene Zeichen werden bis zum nächsten Lesevorgang gepuffert. Die Funktionen melden die Gesamtzahl der tatsächlich gelesenen Zeichen. Wenn der Echoeingabemodus aktiviert ist, werden zeichen, die von diesen Funktionen gelesen werden, an der aktuellen Cursorposition in den aktiven Bildschirmpuffer geschrieben.

Ein Prozess kann WriteFile oder WriteConsole verwenden, um entweder in einen aktiven oder inaktiven Bildschirmpuffer zu schreiben, oder es kann WriteFile verwenden, um in eine Datei oder eine Pipe zu schreiben, wenn STDOUT umgeleitet wurde. Der verarbeitete Ausgabemodus und der Umbruch im EOL-Ausgabemodus steuern, wie Zeichen in einen Bildschirmpuffer geschrieben oder wiedergegeben werden.

Zeichen, die von WriteFile oder WriteConsole geschrieben oder von ReadFile oder ReadConsole wiedergegeben werden, werden an der aktuellen Cursorposition in einen Bildschirmpuffer eingefügt. Wie jedes Zeichen geschrieben wird, wechselt die Cursorposition zur nächsten Zeichenzelle; Das Verhalten am Ende einer Zeile hängt jedoch vom Umbruch des Konsolenbildschirmpuffers im EOL-Ausgabemodus ab.

Weitere Details zur Position des Cursors finden Sie in virtuellen Terminalsequenzen, insbesondere in der Abfragestatuskategorie zum Suchen der aktuellen Position und der Cursorpositionskategorie zum Festlegen der aktuellen Position. Alternativ kann eine Anwendung die GetConsoleScreenBufferInfo-Funktion verwenden, um die aktuelle Cursorposition und die SetConsoleCursorPosition-Funktion festzulegen, um die Cursorposition festzulegen. Der Mechanismus für virtuelle Terminalsequenzen wird jedoch für alle neuen und laufenden Entwicklungen bevorzugt. Weitere Details zur Strategie hinter dieser Entscheidung finden Sie in der Dokumentation zu klassischen Funktionen im Vergleich zu virtuellen Terminal- und Ökosystem-Roadmaps.

Ein Beispiel, das die High-Level-Konsolen-E/A-Funktionen verwendet, finden Sie unter Verwenden der High-Level-Eingabe- und Ausgabefunktionen.For an example that uses the high-level console I/O functions, see Using the High-Level Input and Output Functions.