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

 

Hosted by uCoz