Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das System erstellt beim Starten eines Konsolenvorgangs eine neue Konsole, einen Zeichenmodusprozess, dessen Einstiegspunkt die Hauptfunktion ist. Beispielsweise erstellt das System beim Starten des Befehlsprozessors cmd.exeeine neue Konsole. Wenn der Befehlsprozessor einen neuen Konsolenvorgang startet, kann der Benutzer angeben, ob das System eine neue Konsole für den neuen Prozess erstellt oder ob er die Konsole des Befehlsprozessors erbt.
Ein Prozess kann mithilfe einer der folgenden Methoden eine Konsole erstellen:
- Eine grafische Benutzeroberfläche (GUI) oder ein Konsolenprozess kann die CreateProcess-Funktion mit CREATE_NEW_CONSOLE verwenden, um einen Konsolenprozess mit einer neuen Konsole zu erstellen. (Standardmäßig erbt ein Konsolenprozess die Konsole seiner übergeordneten Konsole, und es besteht keine Garantie dafür, dass die Eingabe durch den Prozess empfangen wird, für den er vorgesehen war.)
- Ein GUI- oder Konsolenprozess, der derzeit nicht an eine Konsole angefügt ist, kann die AllocConsole-Funktion verwenden, um eine neue Konsole zu erstellen. (GUI-Prozesse werden nicht an eine Konsole angefügt, wenn sie erstellt werden. Konsolenprozesse werden nicht an eine Konsole angefügt, wenn sie mithilfe von CreateProcess mit DETACHED_PROCESS erstellt werden.)
In der Regel verwendet ein Prozess AllocConsole , um eine Konsole zu erstellen, wenn ein Fehler auftritt, der eine Interaktion mit dem Benutzer erfordert. Beispielsweise kann ein GUI-Prozess eine Konsole erstellen, wenn ein Fehler auftritt, der verhindert, dass er seine normale grafische Benutzeroberfläche verwendet, oder ein Konsolenprozess, der normalerweise nicht mit dem Benutzer interagiert, eine Konsole erstellen kann, um einen Fehler anzuzeigen.
Ein Prozess kann auch eine Konsole erstellen, indem das CREATE_NEW_CONSOLE Flag in einem Aufruf von CreateProcess angegeben wird. Diese Methode erstellt eine neue Konsole, auf die für den untergeordneten Prozess, aber nicht für den übergeordneten Prozess zugegriffen werden kann. Durch separate Konsolen können sowohl übergeordnete als auch untergeordnete Prozesse ohne Konflikte mit dem Benutzer interagieren. Wenn dieses Flag beim Erstellen eines Konsolenvorgangs nicht angegeben wird, werden beide Prozesse an dieselbe Konsole angefügt, und es gibt keine Garantie, dass der richtige Prozess die für ihn vorgesehene Eingabe erhält. Anwendungen können Verwirrung verhindern, indem untergeordnete Prozesse erstellt werden, die keine Handles des Eingabepuffers erben, oder indem sie jeweils nur einen untergeordneten Prozess aktivieren, um ein Eingabepufferhandle zu erben, während verhindert wird, dass der übergeordnete Prozess Konsoleneingaben liest, bis das untergeordnete Element abgeschlossen ist.
Das Erstellen einer neuen Konsole führt zu einem neuen Konsolenfenster sowie separaten E/A-Puffern für die Ausgabe auf dem Bildschirm und der Eingabe des Benutzers. Der prozess, der der neuen Konsole zugeordnet ist, verwendet die GetStdHandle-Funktion , um die Handles der Eingabe- und Bildschirmpuffer der neuen Konsole abzurufen. Diese Handles ermöglichen den Zugriff auf die Konsole.
Wenn ein Prozess CreateProcess verwendet, kann er eine STARTUPINFO-Struktur angeben, deren Member die Merkmale der ersten neuen Konsole (sofern vorhanden) steuern, die für den untergeordneten Prozess erstellt wurde. Die im Aufruf von CreateProcess angegebene STARTUPINFO-Struktur wirkt sich auf eine Konsole aus, die erstellt wird, wenn das CREATE_NEW_CONSOLE Flag angegeben ist. Es wirkt sich auch auf eine Konsole aus, die erstellt wird, wenn der untergeordnete Prozess anschließend AllocConsole verwendet. Die folgenden Konsolenmerkmale können angegeben werden:
- Größe des neuen Konsolenfensters in Zeichenzellen
- Position des neuen Konsolenfensters in Bildschirmpixelkoordinaten
- Größe des Bildschirmpuffers der neuen Konsole in Zeichenzellen
- Text- und Hintergrundfarbattribute des Bildschirmpuffers der neuen Konsole
- Anzeigename für die Titelleiste des Fensters der neuen Konsole
Das System verwendet Standardwerte, wenn die STARTUPINFO-Werte nicht angegeben sind. Ein untergeordneter Prozess kann die GetStartupInfo-Funktion verwenden, um die Werte in der STARTUPINFO-Struktur zu bestimmen.
Ein Prozess kann die Position des Konsolenfensters auf dem Bildschirm nicht ändern, aber die folgenden Konsolenfunktionen stehen zur Verfügung, um die anderen eigenschaften festzulegen oder abzurufen, die in der STARTUPINFO-Struktur angegeben sind.
| Funktion | BESCHREIBUNG |
|---|---|
| GetConsoleScreenBufferInfo | Ruft die Fenstergröße, die Bildschirmpuffergröße und farbattribute ab. |
| SetConsoleWindowInfo | Ändert die Größe des Konsolenfensters. |
| SetConsoleScreenBufferSize | Ändert die Größe des Konsolenbildschirmpuffers. |
| SetConsoleTextAttribute | Legt die Farbattribute fest. |
| SetConsoleTitle | Legt den Titel des Konsolenfensters fest. |
| GetConsoleTitle | Ruft den Titel des Konsolenfensters ab. |
Ein Prozess kann die FreeConsole-Funktion verwenden, um sich von einer geerbten Konsole oder von einer von AllocConsole erstellten Konsole zu trennen.
Ein Prozess kann die AttachConsole-Funktion verwenden, um sich selbst an eine andere vorhandene Konsolensitzung anzufügen, nachdem FreeConsole zum Trennen von einer eigenen Sitzung verwendet wurde (oder wenn andernfalls keine angefügte Sitzung vorhanden ist).