|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Creation of a Console
Microsoft Windows® creates a new console when it starts a console process, a character-mode process whose entry point is the main function. For example, Windows creates a new console when it starts the command processor. When the command processor starts a new console process, the user can specify whether the system creates a new console for the new process or whether it inherits the command processor's console. A process can create a console by using one of the following methods:
· A graphical user interface (GUI) or console process that is not currently attached to a console can use the AllocConsole function to create a new console. · A GUI or console process can use the CreateProcess function to create a new console process and specify a flag to tell the system to create a new console.
Typically, a process uses AllocConsole to create a console when an error occurs requiring interaction with the user. For example, a GUI process can create a console when an error occurs that prevents it from using its normal graphical interface, or a console process that does not normally interact with the user can create a console when an error makes it necessary. The process that calls AllocConsole must not be attached to an existing console. GUI processes are not attached to any console when they are created. A console process is not attached to a console if the DETACHED_PROCESS flag was specified in a call to CreateProcess when the process was created. A process can use the FreeConsole function to detach itself from an inherited console or from a console created by AllocConsole.
A process can also create a console by specifying the CREATE_NEW_CONSOLE flag in a call to CreateProcess. This method creates a new console that is accessible to the child process but not to the parent process. Separate consoles enable both parent and child processes to interact with the user without conflict. If this flag is not specified when a console process is created, both processes are attached to the same console, and there is no guarantee that the correct process will receive the input intended for it. Applications can prevent confusion by creating child processes that do not inherit handles of the input buffer, or by enabling only one child process at a time to inherit an input buffer handle while preventing the parent process from reading console input until the child has finished.
Creating a new console results in a new console window, as well as separate I/O screen buffers. The process associated with the new console uses the GetStdHandle function to get the handles of the new console's input and screen buffers. These handles enable the process to access the console. When a process uses CreateProcess, it can specify a STARTUPINFO structure, whose members control the characteristics of the first new console (if any) created for the child process. The STARTUPINFO structure specified in the call to CreateProcess affects a console created if the CREATE_NEW_CONSOLE flag is specified. It also affects a console created if the child process subsequently uses AllocConsole. The following console characteristics can be specified:
· The size, in character cells, and the location, in screen pixel coordinates, of the new console window · The size, in character cells, of the new console's screen buffer · The text and background color attributes of the new console's screen buffer · The name appearing in the title bar of the new console's window
The system uses default values if the STARTUPINFO values are not specified. A child process can use the GetStartupInfo function to determine the values in its STARTUPINFO structure. A process cannot change the location of its console window on the screen, but the following console functions are available to set or retrieve the other properties specified in the STARTUPINFO structure.
Function Description GetConsoleScreenBufferInfo Retrieves the window size, screen buffer size, and color attributes. SetConsoleWindowInfo Changes the size of the console window. SetConsoleScreenBufferSize Changes the size of the screen buffer. SetConsoleTextAttribute Sets the color attributes. SetConsoleTitle Sets the console window title. GetConsoleTitle Retrieves the console window title.
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Создание Консоли
Microsoft Windows Создает новую консоль когда это начинает с консольного процесса, символьный режим процесса чья точка входа является основной функцией. Например, Windows создает новую консоль когда это начинает командный процессор. Когда командный процессор начинает с нового консольного процесса, пользователь может определить создает система новую консоль для нового процесса или наследует она командную консоль процессора. Процесс может создать консоль используя один из следующих методов:
Графический интерфейс пользавателя (ГРАФИЧЕСКИЙ интерфейс пользователя) или консольный процесс, что к настоящему времени не приложен к консоли может использовать функцию AllocConsole, чтобы создавать новую консоль. ГРАФИЧЕСКИЙ интерфейс пользователя или консольный процесс может использовать функцию CreateProcess, чтобы создавать новый консольный процесс и определять флаг, чтобы сообщать систему, чтобы создавать новую консоль.
Обычно, процесс использует AllocConsole, чтобы создавать консоль когда ошибка происходит требовать взаимодействия с пользователем. Например, процесс ГРАФИЧЕСКОГО интерфейса пользователя может создать консоль когда ошибка происходит, что предохраняет это от использования нормального графического интерфейса, или консольный процесс, что нормально не взаимодействует с пользователем может создать консоль когда ошибка делает это необходимым. Процесс, который называет AllocConsole не должен прилаган к существующей консоли. ПРОЦЕССЫ ГРАФИЧЕСКОГО интерфейса пользователя не приложены к любой консоли когда они созданы. Консольный процесс не приложен к консоли если флаг DETACHED_PROCESS был определен на вызове на CreateProcess когда процесс был создан. Процесс может использовать функцию FreeConsole, чтобы отделять себя с унаследованной консоли или с консоли созданной AllocConsole.
Процесс может также создать консоль определяя флаг CREATE_NEW_CONSOLE на вызове на CreateProcess. Этот метод создает новую консоль, которая доступна в процессе ребенка но не в родительский процесс. Отдельные консоли допустимые как родительские так и процессы ребенка, чтобы взаимодействовать с пользователем без конфликта. Если этот флаг не определен когда консольный процесс создан, как процессы приложены к той же консоли, так и нет гарантировать, что правильный процесс получит ввод предназначенный для этого. Приложения могут предохранить неразбериху создавая ребенка обрабатывает, что не наследовать ручки входного буфера, или приспосабливаясь только один процесс ребенка от, чтобы наследовать входная буферная ручка при предотвращении родительского процесса чтобы читать консольный ввод пока ребенок не завершился.
Создание новой консоли заканчивается новым консольным окном, а также отдельные экранные буферы В/В. Процесс связанный новой консолью использует функцию GetStdHandle, чтобы получать ручки нового консольного ввода и отгораживать буферы. Эти ручки позволяют процесс, чтобы иметь доступ к консоли. Когда процесс использует CreateProcess, он может определить структуру STARTUPINFO, чьи участники управляют характеристиками первой новой консоли (если имеется) созданное для процесса ребенка. Структура STARTUPINFO определенная на вызове на CreateProcess влияет на консоль созданную если флаг CREATE_NEW_CONSOLE определен. Это также влияет на консоль созданную если процесс ребенка впоследствии использует AllocConsole. Консольные характеристики следующего могут быть определены:
Размер, в символьных ячейках, и позиции, в экранных координатах пикселя, нового консольного окна размер, в символьных ячейках, нового консольного экранного буфера текст и цвет фона атрибутов нового консольного экранного буфера имя, появляющееся в зоне названия нового консольного окна
Система использует значение по умолчанию если величины STARTUPINFO не определены. Процесс ребенка может использовать функцию GetStartupInfo, чтобы определять величины в своей структуре STARTUPINFO. Процесс не может изменить позицию своего консольного окна на экране, но консольные функции следующего доступны устанавливать или извлекать другие свойства определенные в структуре STARTUPINFO.
Описание Функции GetConsoleScreenBufferInfo ИЗВЛЕКАЕТ размер окна, отгораживает буферный размер, и цветные атрибуты. SetConsoleWindowInfo ИЗМЕНЯЕТ размер консольного окна. SetConsoleScreenBufferSize ИЗМЕНЯЕТ размер экранного буфера. SetConsoleTextAttribute УСТАНАВЛИВАЕТ цветные атрибуты. SetConsoleTitle УСТАНАВЛИВАЕТ консольное название окна. GetConsoleTitle ИЗВЛЕКАЕТ консольное название окна.
|
|
|
|
| |