Вниз
Скачать: 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.014 c
7-100477
BJValentine
2003-02-04 16:55
2003.03.31
События Windows


1-100212
VaS
2003-03-20 10:47
2003.03.31
Сохранение свойств вложенных компонентов


14-100412
Mr.KiLLER
2003-03-11 20:30
2003.03.31
Умереть невовремя...


4-100507
diks
2003-02-02 08:08
2003.03.31
Отключение и включение клавы


3-100190
DenKop
2003-03-12 23:00
2003.03.31
Таблицы InterBase




   Наверх