Операционные системы. Программирование в операционной среде Windows

68 Приложение 1. Описание параметров функции CreateProcess Для создания процесса используется функция CreateProcess: BOOL CreateProcessA( PCTSTR ps zApplicationName , //имя исполняемого файла PTSTR pszCommandLine, //указатель на командную строку PSECURITY_AT TRIBUTES psaProcess, //указатель на атрибуты защиты процесса PSECURITY_ATTRIBUTES psaThread, // указатель на атрибуты защиты потока BOOL binheri tHandles , //флаг наследования описателей ОЯ DWORD fdwCreate, / флаги, определяющие как создать процесс PVOID pvEnvironment, //указатель блока переменных окружения PCTSTR pszСиrDir, / указатель текущего диска и каталога PSTARTUPINFO psiStartlnfo, //указатель на структуру STARTUPINFO PPROCESS_INFORMATION ppiProcInfo) ///указатель на структуру / PROCESS INFORMATION 1. Параметры pszApplicationName и pszCommandLine Эти параметры определяют имя исполняемого файла, которым будет пользоваться новый процесс, и командную строку, передаваемую этому процессу. Следует отметить, что тип параметра pszCommandLine: PTSTR. Он означает, что CreateProcess ожидает передачи адреса строки, которая не является константой. Перед вызовом CreateProcess необходимо копировать константную строку во временный буфер: STARTUPINFOA si = { sizeof(si) }; PROCESS_INFORMATION pi; TCHAR szCommandLine[] = TEXT("NOTEPAD"); CreateProcessA(NULL, szCoramandLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); Параметр pszCommandLine позволяет указать полную командную строку, используемую функцией CreateProcess при создании нового процесса, только если параметр pszApplicationName равен NULL. Вместо NULL в параметре pszApplicationName можно передать адрес строки с именем исполняемого файла, который надо запустить. Однако тогда придется указать не только его имя, но и расширение, поскольку в этом случае имя не дополняется расширением ЕХЕ автоматически. Если полный путь не задан, функция CreateProcess предполагает, что файл находится в текуш,ем каталоге. Если в текуш,ем каталоге файла нет, функция не станет искать его в других каталогах. При указанном в pszApplicationName имени файла функция CreateProcess передает новому процессу содержимое параметра pszCommandLine как командную строку. Допустим, вызвали CreateProcess так: // размещаем строку пути в области памяти для чтения и записи TCHAR szPath[] = TEXT("WORDPAD README.TXT");

RkJQdWJsaXNoZXIy MTY0OTYy