Реферат - Потоки / STARTUPINFO
.htmSTARTUPINFO @font-face { font-family: Tahoma; } @font-face { font-family: Arial Unicode MS; } @font-face { font-family: @Arial Unicode MS; } @page Section1 {size: 595.3pt 841.9pt; margin: 2.0cm 42.5pt 2.0cm 3.0cm; mso-header-margin: 35.4pt; mso-footer-margin: 35.4pt; mso-paper-source: 0; } P.MsoNormal { FONT-SIZE: 10pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: Tahoma; mso-style-parent: ""; mso-pagination: widow-orphan; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-bidi-font-family: "Times New Roman" } LI.MsoNormal { FONT-SIZE: 10pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: Tahoma; mso-style-parent: ""; mso-pagination: widow-orphan; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-bidi-font-family: "Times New Roman" } DIV.MsoNormal { FONT-SIZE: 10pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: Tahoma; mso-style-parent: ""; mso-pagination: widow-orphan; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-bidi-font-family: "Times New Roman" } H1 { FONT-SIZE: 16pt; MARGIN: 12pt 0cm 3pt; FONT-FAMILY: Arial; mso-pagination: widow-orphan; mso-style-next: Обычный; mso-outline-level: 1; mso-font-kerning: 16.0pt } H3 { BORDER-RIGHT: medium none; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; PADDING-LEFT: 0cm; FONT-SIZE: 13pt; PADDING-BOTTOM: 0cm; MARGIN: 12pt 0cm 3pt; BORDER-LEFT: medium none; PADDING-TOP: 0cm; BORDER-BOTTOM: medium none; FONT-FAMILY: Arial; mso-pagination: widow-orphan; mso-style-next: Обычный; mso-outline-level: 3; mso-border-bottom-alt: solid windowtext .5pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm } H4 { FONT-SIZE: 10pt; MARGIN: 12pt 0cm 3pt; FONT-FAMILY: Tahoma; mso-pagination: widow-orphan; mso-bidi-font-size: 14.0pt; mso-bidi-font-family: "Times New Roman"; mso-style-next: Обычный; mso-outline-level: 4; text-shadow: auto } P.HelpBody { FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 36pt; FONT-FAMILY: "Arial Unicode MS"; mso-ansi-language: EN-US; mso-pagination: widow-orphan; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: Tahoma; mso-style-name: "Help Body"; mso-layout-grid-align: none; mso-bidi-font-weight: normal } LI.HelpBody { FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 36pt; FONT-FAMILY: "Arial Unicode MS"; mso-ansi-language: EN-US; mso-pagination: widow-orphan; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: Tahoma; mso-style-name: "Help Body"; mso-layout-grid-align: none; mso-bidi-font-weight: normal } DIV.HelpBody { FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 36pt; FONT-FAMILY: "Arial Unicode MS"; mso-ansi-language: EN-US; mso-pagination: widow-orphan; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: Tahoma; mso-style-name: "Help Body"; mso-layout-grid-align: none; mso-bidi-font-weight: normal } DIV.Section1 { page: Section1 } STARTUPINFO члены структуры
замечания
см. также
Структура STARTUPINFO используется функцией CreateProcess для определения свойств главного окна, если новое окно создаётся для нового процесса. Для процессов графического интерфейса пользователя (GUI), эта информация относится к первому окну, создаваемому функцией CreateProcess и показываемому функцией ShowWindow. Для консольных приложений эта информация относится к консольному окну, если таковое создаётся. Процесс может использовать функцию GetStartupInfo для получения структуры STARTUPINFO, указанной при создании процесса.
typedef struct _STARTUPINFO { // si
DWORD cb;
LPTSTR lpReserved;
LPTSTR lpDesktop;
LPTSTR lpTitle;
DWORD dwX;
DWORD dwY;
DWORD dwXSize;
DWORD dwYSize;
DWORD dwXCountChars;
DWORD dwYCountChars;
DWORD dwFillAttribute;
DWORD dwFlags;
WORD wShowWindow;
WORD cbReserved2;
LPBYTE lpReserved2;
HANDLE hStdInput;
HANDLE hStdOutput;
HANDLE hStdError;
} STARTUPINFO, *LPSTARTUPINFO;
Члены структуры
cb
Размер структуры в байтах.
lpReserved
Зарезервировано. Устанавливается в NULL до передачи структуры в функцию CreateProcess.
lpDesktop
Только в Windows NT: Указатель на строку с нольтерминатором, которая содержит либо только имя десктопа, либо и имя станции и десктопа для этого процесса. Обратный слэш в этой строке является показателем того, что строка включает в себя имена станции и десктопа. Иначе, строка интерпретируется как имя десктопа. Если параметр lpDesktop NULL, новый процесс наследует имена станции и десктопа родительского процесса.
lpTitle
Для консольных процессов это название указывается в заголовке нового консольного окна. Если же этот параметр NULL, то заголовком окна будет имя запускаемого файла. Этот параметр должен быть NULL для GUI-процессов и тех консольных процессов, которые не создают новых консольных окон.
dwX, dwY
Игнорируются, кроме тех случаев, когда dwFlags содержит флаг STARTF_USEPOSITION. Устанавливают смещения по осям X и Y, в пикселах, верхнего левого угла окна, если новое окно создаётся. Смещение отсчитывается относительно экрана. Для GUI-процессов указанная позиция используется только во время первого вызова процессом функции CreateWindow для создания перекрывающего окна, если параметр x функции CreateWindow равен CW_USEDEFAULT.
dwXSize, dwYSize
Игнорируются, кроме тех случаев, когда dwFlags содержит флаг STARTF_USESIZE. Задают ширину (dwXSize) и высоту (dwYSize), нового создаваемого окна. Для GUI-процессов указанные значения используются только во время первого вызова процессом функции CreateWindow для создания перекрывающего окна, если параметр nWidth функции CreateWindow равен CW_USEDEFAULT.
dwXCountChars, dwYCountChars
Игнорируются, кроме тех случаев, когда dwFlags содержит флаг STARTF_USECOUNTCHARS. Для консольных процессов, если создаётся консольное окно, dwXCountChars задаёт ширину экранного буфера в символьных столбцах, и dwYCountChars задаёт высоту экранного буфера в символьных строках. Эти значения игнорируются в GUI-процессах.
dwFillAttribute
Игнорируется, кроме тех случаев, когда dwFlags содержит флаг STARTF_USEFILLATTRIBUTE. Задаёт начальные цвета текста и фона создаваемого консольного окна для консольного приложения. Эти значения игнорируются в GUI-процессах. Значения могут быть любой комбинацией следующих констант: FOREGROUND_BLUE, FOREGROUND_GREEN, FOREGROUND_RED, FOREGROUND_INTENSITY, BACKGROUND_BLUE, BACKGROUND_GREEN, BACKGROUND_RED, and BACKGROUND_INTENSITY. Например, следующая комбинация значений задаёт красный цвет текста на белом фоне:
FOREGROUND_RED | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE
dwFlags
Это битовое поле определяет использование членов в структуре STARTUPINFO при создании процессом окна. Возможна любая комбинация следующих значений:
Значение
Описание
STARTF_USESHOWWINDOW
Если не установлен, член wShowWindow игнорируется.
STARTF_USEPOSITION
Если не установлен, члены dwX и dwY игнорируются.
STARTF_USESIZE
STARTF_USECOUNTCHARS
Если не установлен, члены dwXCountChars и dwYCountChars игнорируются.
STARTF_USEFILLATTRIBUTE
Если не установлен, член dwFillAttribute игнорируется.
STARTF_FORCEONFEEDBACK
Если установлен, то при вызове CreateProcess, курсор будет иметь вид фонового режима 2 секунды. Если в течение этого времени процесс выполнит первый вызов GUI, система даёт ещё 5 секунд процессу. Если в течение этого времени процесс показывает окно, система даёт ещё 5 секунд процессу для окончания прорисовки окна. Система убирает курсор фонового режима после первого вызова GetMessage, вне зависимости от того рисует ли процесс. Смотри более подробно в секции замечаний.
STARTF_FORCEOFFFEEDBACK
Если установлен, курсор показывается в нормальном виде при загрузке процесса. Смотри более подробно в секции замечаний.
STARTF_USESTDHANDLES
Если установлен, организуется стандартный ввод-вывод процесса, стандартный обработчик ошибок в дескрипторы задаваемые членами структуры hStdInput, hStdOutput, и hStdError. Для правильной работы необходимо, чтобы параметр функции CreateProcess fInheritHandles, был равен TRUE.
Если не установлен, члены структуры hStdInput, hStdOutput, и hStdError игнорируются.
wShowWindow
Игнорируется, кроме тех случаев, когда dwFlags содержит флаг STARTF_USESHOWWINDOW. wShowWindow может быть равен любой из констант вида SW_константа определённых в WINUSER.H. Для GUI-процессов wShowWindow задаёт значение по умолчанию первого вызова функции ShowWindow. Параметр функции ShowWindow nCmdShow игнорируется. В последующих вызовах функции ShowWindow, член wShowWindow используется, если параметр функции ShowWindow nCmdShow установлен в SW_SHOWDEFAULT.
cbReserved2
Зарезервирован; должен быть равен 0.
lpReserved2
Зарезервирован; должен быть NULL.
hStdInput
Игнорируется, кроме тех случаев, когда dwFlags содержит флаг STARTF_USESTDHANDLES. Задаёт дескриптор, который будет использоваться как стандартный обработчик ввода процесса.
hStdOutput
Игнорируется, кроме тех случаев, когда dwFlags содержит флаг STARTF_USESTDHANDLES. Задаёт дескриптор, который будет использоваться как стандартный обработчик вывода процесса.
hStdError Игнорируется, кроме тех случаев, когда dwFlags содержит флаг STARTF_USESTDHANDLES. Задаёт дескриптор, который будет использоваться как стандартный обработчик ошибок процесса.
Замечания
Если GUI процесс запускается без указанных флагов STARTF_FORCEONFEEDBACK или STARTF_FORCEOFFFEEDBACK, используется курсор фонового режима. Подсистема GUI-процесса специфицируется как "windows."
См. также
CreateProcess, CreateWindow, GetMessage, GetStartupInfo, PeekMessage, ShowWindow, WinMain
#bn { DISPLAY: block } #bt { DISPLAY: block }