Операционные системы. Программирование в операционной среде Windows
73 typedef struct _STARTUPINFO { DWORD cb; PSTH IpReserved; PSTR IpDesktop; PSTR IpTitle; DWORD dwX; DWORD dwY; DWORD dwXSize; DWORD dwYSize; DWORD dwXCountChars; DWORD dwYCountChars; DWORD dwFillAttribute; DWORD dwFlags; WORD wShowWindow; WORD cbReserved2; PBYTE lpReserved2; HANDLE hStdlnput; HANDLE hStdOutput; HANDLE hStdError; } STARTUPINFO, *LPSTARTUPINFO; Элементы структуры STARTUPINFO используются Windows- функциями при создании нового процесса. Большинство приложений порождает процессы с атрибутами по умолчанию, но и в этом случае необходима инициализация элементов структуры STARTUPINFO хотя бы нулевыми значениями, а в элемент сЬ необходимо занести размер этой структуры: STARTUPINFOA si = { sizeof(si) }; CreateProcessA(.. , &si, ...}; Если понадобится изменить какие-то элементы структуры, необходимо сделать это перед вызовом CreateProcess. Элементы этой структуры приведены в таблице 2. Некоторые элементы имеют смысл, только если дочернее приложение создает перекрываемое (overlapped) окно, а другие — если это приложение осуществляет ввод-вывод на консоль. Рассмотрим элемент структуры dwFlags. Он содержит набор флагов, позволяющих управлять созданием дочернего процесса. Большая часть флагов просто сообщает функции CreateProcess, содержат ли прочие элементы структуры STARTUPINFO полезную информацию или некоторые из них можно игнорировать. Список допустимых флагов приведен в таблице 3. Два дополнительных флага — STARTF FORCEONFEEDBACK и STARTF FORCEOFFFEEDBACK — позволяют контролировать форму курсора мыши в момент запуска нового процесса. Поскольку Windows поддерживает истинную вытесняющую многозадачность, можно запустить одно приложение и, пока оно инициализируется, поработать с другой программой.
Made with FlippingBook
RkJQdWJsaXNoZXIy MTY0OTYy