Вниз
Скачать: CL | DM;

Создание процесса и ожидание его окончания   Найти похожие ветки 

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
14-100437
dimich1978
2003-03-13 10:44
2003.03.31
Прикол


7-100468
Vitas
2003-02-05 07:33
2003.03.31
Нужен исходник или совет как можно определить набираемый номер на


9-100136
Whitewolf
2002-04-18 12:30
2003.03.31
Большой массив данных. Как лучше реализовать?


3-100141
Фагот
2003-03-06 13:11
2003.03.31
SQL


7-100475
Ionv
2003-02-06 14:00
2003.03.31
Обновление экрана




   Наверх