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.
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database