CreateProcess вешает основной поток программы
Добавлено: 23 дек 2017, 21:22
Доброго времени суток!
Запускаю приложения так
после чего основной поток повисает, пока не закрою созданное CreateProcess приложение. Отследить завершение работы приложения тоже надо. Как можно исправить данное положение?
Запускаю приложения так
Код: Выделить всё
procedure TFormMain.Button1Click(Sender: TObject);
begin
FillChar(StartupInfo, SizeOf(StartupInfo), 0);
FillChar(ProcessInfo, SizeOf(ProcessInfo), 0);
StartupInfo.cb := SizeOf(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := SW_SHOWNORMAL;
if CreateProcess(nil,
PChar(Edit1.Text),
nil,
nil,
False,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,
nil,
PChar(ExtractFilePath(Edit1.Text)),
StartupInfo,
ProcessInfo) then
begin
WaitForSingleObject(ProcessInfo.hProcess, INFINITE); // Ждём завершения процесса
CloseHandle(ProcessInfo.hThread);
CloseHandle(ProcessInfo.hProcess);
end;
end;