|
|
|
|
Создает новый процесс и его главный поток. Затем новый процесс запускает указанный исполняемый файл в контексте безопасности вызывающего процесса.
Синтаксис
| function CreateProcess(
| | AppFileName, | | CommandLine, | | ProcessAttr, | | ThreadAttr, | | InheritHandles, | | CreationFlags, | | Environment, | | CurrentDir, | | StartupInfo, | | ProcessInfo
| | ): Boolean;
|
| Параметры
|
| Параметр
| Тип
| Описание
|
| AppFileName
| String
| исполняемый файл
|
| CommandLine
| String
| командная строка
|
| ProcessAttr
| TSecurity_Attributes
| атрибуты доступа процесса или null
|
| ThreadAttr
| TSecurity_Attributes
| атрибуты доступа потока или null
|
| InheritHandles
| Boolean
| признак наследования наследуемых дескрипторов
|
| CreationFlags
| Enumset
| комбинируемые флаги создания процесса (см. ниже)
|
| Environment
| TStrings
| новый блок конфигурации процесса
|
| CurrentDir
| String
| текущий каталог процесса
|
| StartupInfo
| TStartupInfo
| стартовая информация процесса
|
| ProcessInfo
| TProcessInformation
| информация о процессе
|
|
| Параметр CreationFlags
|
| Значение
| Описание
|
| CREATE_BREAKAWAY_FROM_JOB
| разрешить возможность не связывать новый процесс и его дочерние процессы с заданием родительского процесса
|
| CREATE_DEFAULT_ERROR_MODE
| не наследовать новым процессом режим ошибки родительского процесса и установить для него текущий, заданный по умолчанию, режим ошибки
|
| CREATE_NEW_CONSOLE
| если новый процесс запускает консольное приложение, использовать для него новую консоль
|
| CREATE_NEW_PROCESS_GROUP
| назначить новый процесс корневым процессом группы нового процесса
|
| CREATE_NO_WINDOW
| если новый процесс запускает консольное приложение, запустить его без консольного окна
|
| CREATE_PRESERVE_CODE_AUTHZ_LEVEL
| выполнить код нового процесса без автоматических ограничений
|
| CREATE_SUSPENDED
| отложить запуск первичного потока нового процесса до вызова функции ResumeThread
|
| CREATE_UNICODE_ENVIRONMENT
| блок конфигурации, указанный в параметре Environment, использует символы Unicode
|
| DEBUG_ONLY_THIS_PROCESS
| перенести отладку родительского процесса на новый процесс
|
| DEBUG_PROCESS
| запустить новый процесс, как отлаживаемый родительским процессом
|
| DETACHED_PROCESS
| если новый процесс запускает консольное приложение, не наследовать для него родительскую консоль, и отложить создание новой консоли до вызова функции AllocConsole
|
|
Возвращаемое значение
true в случае успеха или false в противном случае.
// Главная форма frm=new TForm(); frm.Caption="JS+ - функция WinAPI CreateProcess"; frm.Width =525; frm.Height=375;
// Строка состояния stb=new TStatusBar(frm);
// Кнопка btn=new TButton(frm); btn.Caption="Блокнот"; btn.Left=(frm.ClientWidth-btn.Width)/2; btn.Top =(stb.Top-btn.Height)/2-15; btn.Hint="Запустить приложение notepad.exe"; btn.ShowHint=true; btn.OnClick=btn_Click;
// Переключатель chb=new TCheckBox(frm); chb.Text="ждать завершения работы приложения "+btn.Caption; chb.Width=chb.TextWidth(chb.Text)+20; chb.Left=(frm.ClientWidth-chb.Width)/2; chb.Top =btn.Top+btn.Height+15; chb.Checked=true;
stb.SimpleText=" Для запуска приложения нажмите кнопку "+ btn.Caption;
frm.ShowModal();
// Обработчик события OnClick function btn_Click(btn) { stb.SimpleText=" Запуск приложения ...";
stb.SimpleText=(app_Exec("notepad.exe",SW_SHOWNORMAL,chb.Checked)) ? " Успешный запуск приложения" : " Ошибка при запуске приложения "; }
function app_Exec(exec_Str,show_Mode,wait_Flg) { var si=new TStartupInfo(); var pi=new TProcessInformation();
si.dwFlags=STARTF_USESHOWWINDOW; si.wShowWindow=show_Mode;
if (CreateProcess( null,exec_Str,null,null,false,0,null,null,si,pi)==false) return false;
CloseHandle(pi.hThread);
if (wait_Flg) { WaitForSingleObject(pi.hProcess,INFINITE); CloseHandle(pi.hProcess); }
return true; }
|
Совместимость
Windows API
|
| JS+ | Руководство пользователя
|
|
|
| |
|
|