Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
System tworzy nową konsolę podczas uruchamiania procesu konsoli, procesu trybu znaków, którego punktem wejścia jest główna funkcja. Na przykład system tworzy nową konsolę po uruchomieniu procesora cmd.exepoleceń . Gdy procesor poleceń uruchamia nowy proces konsoli, użytkownik może określić, czy system tworzy nową konsolę dla nowego procesu, czy dziedziczy konsolę procesora poleceń.
Proces może utworzyć konsolę przy użyciu jednej z następujących metod:
- Graficzny interfejs użytkownika (GUI) lub proces konsoli może używać funkcji CreateProcess z CREATE_NEW_CONSOLE w celu utworzenia procesu konsoli przy użyciu nowej konsoli. (Domyślnie proces konsoli dziedziczy konsolę jej konsoli nadrzędnej i nie ma gwarancji, że dane wejściowe są odbierane przez proces, dla którego był przeznaczony).
- Interfejs użytkownika lub proces konsoli, który nie jest obecnie dołączony do konsoli, może użyć funkcji AllocConsole do utworzenia nowej konsoli. (Procesy graficznego interfejsu użytkownika nie są dołączane do konsoli podczas ich tworzenia. Procesy konsoli nie są dołączane do konsoli, jeśli są tworzone przy użyciu metody CreateProcess z DETACHED_PROCESS).
Zazwyczaj proces używa metody AllocConsole do utworzenia konsoli, gdy wystąpi błąd wymagający interakcji z użytkownikiem. Na przykład proces graficznego interfejsu użytkownika może utworzyć konsolę, gdy wystąpi błąd uniemożliwiający korzystanie z normalnego interfejsu graficznego lub proces konsoli, który normalnie nie wchodzi w interakcję z użytkownikiem, może utworzyć konsolę w celu wyświetlenia błędu.
Proces może również utworzyć konsolę, określając flagę CREATE_NEW_CONSOLE w wywołaniu metody CreateProcess. Ta metoda tworzy nową konsolę, która jest dostępna dla procesu podrzędnego, ale nie dla procesu nadrzędnego. Oddzielne konsole umożliwiają interakcję zarówno z użytkownikiem nadrzędnym, jak i podrzędnym bez konfliktu. Jeśli ta flaga nie zostanie określona podczas tworzenia procesu konsoli, oba procesy są dołączone do tej samej konsoli i nie ma gwarancji, że właściwy proces otrzyma dane wejściowe przeznaczone dla niego. Aplikacje mogą zapobiec nieporozumieniu przez utworzenie procesów podrzędnych, które nie dziedziczą dojść buforu wejściowego lub przez włączenie tylko jednego procesu podrzędnego w czasie dziedziczenia uchwytu buforu wejściowego, uniemożliwiając procesowi nadrzędnemu odczytywanie danych wejściowych konsoli do momentu zakończenia podrzędnego.
Utworzenie nowej konsoli powoduje wyświetlenie nowego okna konsoli, a także oddzielne we/wy dla danych wyjściowych na ekranie i dane wejściowe od użytkownika. Proces skojarzony z nową konsolą używa funkcji GetStdHandle , aby uzyskać dojścia wejściowych i ekranowych nowej konsoli. Te dojścia umożliwiają procesowi uzyskiwania dostępu do konsoli programu .
Gdy proces używa metody CreateProcess, może określić strukturę STARTUPINFO , której elementy członkowskie kontrolują charakterystykę pierwszej nowej konsoli (jeśli istnieje) utworzonej dla procesu podrzędnego. Struktura STARTUPINFO określona w wywołaniu metody CreateProcess ma wpływ na konsolę utworzoną, jeśli określono flagę CREATE_NEW_CONSOLE . Ma to również wpływ na konsolę utworzoną, jeśli następnie proces podrzędny używa allocConsole. Można określić następujące cechy konsoli:
- Rozmiar nowego okna konsoli w komórkach znaków
- Lokalizacja nowego okna konsoli we współrzędnych pikseli ekranu
- Rozmiar buforu ekranu nowej konsoli w komórkach znaków
- Atrybuty koloru tekstu i tła buforu ekranu nowej konsoli
- Nazwa wyświetlana paska tytułu okna nowej konsoli
System używa wartości domyślnych, jeśli nie określono wartości STARTUPINFO . Proces podrzędny może użyć funkcji GetStartupInfo , aby określić wartości w strukturze STARTUPINFO .
Proces nie może zmienić lokalizacji okna konsoli na ekranie, ale następujące funkcje konsoli są dostępne do ustawiania lub pobierania innych właściwości określonych w strukturze STARTUPINFO .
| Funkcja | Opis |
|---|---|
| GetConsoleScreenBufferInfo | Pobiera rozmiar okna, rozmiar buforu ekranu i atrybuty koloru. |
| SetConsoleWindowInfo | Zmienia rozmiar okna konsoli. |
| SetConsoleScreenBufferSize | Zmienia rozmiar buforu ekranu konsoli. |
| SetConsoleTextAttribute | Ustawia atrybuty koloru. |
| SetConsoleTitle | Ustawia tytuł okna konsoli. |
| GetConsoleTitle | Pobiera tytuł okna konsoli. |
Proces może użyć funkcji FreeConsole , aby odłączyć się od dziedziczonej konsoli lub z konsoli utworzonej przez aplikację AllocConsole.
Proces może użyć funkcji AttachConsole , aby dołączyć się do innej istniejącej sesji konsoli po użyciu rozwiązania FreeConsole , aby odłączyć się od własnej sesji (lub jeśli w przeciwnym razie nie ma dołączonej sesji).