Форум: "Основная";
Текущий архив: 2003.03.31;
Скачать: [xml.tar.bz2];
ВнизСоздание процесса и ожидание его окончания Найти похожие ветки
← →
GIL (2003-03-20 13:05) [0]Знаю, что этот вопрос уже был, может быть и не один раз, но подставив пример в свою программу ничего не получилось. Программа запускает эксплорер и должна в идеале подождать, пока запускаемое окно закроется, в качестве показателя того, что процесс завершился выдается сообщение, но вся проблема в том, что сообщение выдается во время создания (или после - на глаз не определишь) процесса, а не после его завершения. Ожидание вызывается WaitSimpleProcess
← →
cLe0 (2003-03-20 13:40) [1]не WaitSimpleProcess, а WaitForSingleObject - и все работает ))
...
var
FilePath: string;
lpFile, lpCommandLine, lpCurrentDir: PChar;
lpProcessAttributes, lpThreadAttributes: PSecurityAttributes;
bInheritHandles: LongBool;
dwCreationFlags: Integer;
lpEnvironment: Pointer;
lpSI: TStartupInfo;
begin
Result := TRUE;
GetStartupInfo(lpSI);
lpFile := PChar(Path);
lpCommandLine := PChar(CommandLine);
lpProcessAttributes := nil;
lpThreadAttributes := nil;
bInheritHandles := TRUE;
dwCreationFlags := CREATE_DEFAULT_ERROR_MODE;
lpEnvironment := nil;
lpSI.lpReserved := nil;
lpSI.lpDesktop := nil;
lpSI.lpTitle := nil;
lpCurrentDir := PChar(CurrentDir);
lpSI.wShowWindow := SW_NORMAL;
if not CreateProcess(lpFile, lpCommandLine, lpProcessAttributes,
lpThreadAttributes, bInheritHandles, dwCreationFlags,
lpEnvironment, lpCurrentDir, lpSI, lpPI) then
Terminate
else
WaitForSingleObject(lpPI.hProcess, INFINITE);
// Show message
...
← →
Юрий Зотов (2003-03-20 14:28) [2]Есть подозрение, что при попытке повторного запуска (открытии нового окна) Explorer"а в его уже существующем процессе запускается новый поток (в котором это окно и работает), а процесс остается все тот же. Поэтому ждать надо завершения ПОТОКА, а не процесса.
← →
AlexVit (2003-03-20 15:22) [3]
> Юрий Зотов ©
А как корректно определить, что поток завершился?
← →
Юрий Зотов (2003-03-20 15:55) [4]Указать WaitForSingleObject хэндл потока.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.03.31;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c