Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.14;
Скачать: CL | DM;

Вниз

Как дождаться завершения запущенной программы?   Найти похожие ветки 

 
denvor ©   (2002-10-03 01:03) [0]

Всем нам до боли знаком этот пример:


procedure TForm1.Button1Click(Sender: TObject);var si:STARTUPINFO; pi:PROCESS_INFORMATION; cmdline:string;begin ZeroMemory(@si,sizeof(si)); si.cb:=SizeOf(si); cmdline:="c:\command.com"; if not CreateProcess( nil, // No module name (use command line). PChar(cmdline), // Command line. nil, // Process handle not inheritable. nil, // Thread handle not inheritable. False, // Set handle inheritance to FALSE. 0, // No creation flags. nil, // Use parent"s environment block. nil, // Use parent"s starting directory. si, // Pointer to STARTUPINFO structure. pi ) // Pointer to PROCESS_INFORMATION structure. then begin ShowMessage( "CreateProcess failed." ); Exit; end; WaitForSingleObject( pi.hProcess, INFINITE ); CloseHandle( pi.hProcess ); CloseHandle( pi.hThread ); ShowMessage("Done !");end;
Но вот вопрос: как избавиться от засыпания программы, запустившей приложение и ожидающую его завершение, пока работает функция WaitForSingleObject?


 
Юрий Зотов ©   (2002-10-03 02:14) [1]

Выполнить этот же код в дополнительном потоке.


 
Denvor ©   (2002-10-03 10:28) [2]

А можно примерчик?


 
Юрий Зотов ©   (2002-10-03 11:42) [3]

Пример по TThread есть в справке, а текст метода Execute у Вас уже имеется - тот самый , что Вы привели.


 
Proton_   (2002-10-03 15:08) [4]

либо заменить INFINITE на число милисекунд ожидания
и вызывать WaitForSingleObject вместе с application.processmessages, или чем то в этом роде.


 
Юрий Зотов ©   (2002-10-03 16:21) [5]

> и вызывать WaitForSingleObject вместе с
> application.processmessages, или чем то в этом роде.

И это называется - MsgWaitForMultiplyObjects.



 
han_malign   (2002-10-03 16:43) [6]

просто запомнить pi.hProcess и проверять состояние просесса только в критичной, по его завершению, части программы (скажем там где нужно обрабатывать результаты процесса), если нужно постоянно отслеживать состояние - то по таймеру
З.Ы. не забыть закрыть handle-ы после окончания процесса, или по завершению программы.



Страницы: 1 вся ветка

Текущий архив: 2002.11.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
14-46114
Malder
2002-10-07 22:50
2002.11.14
Как работать с IPX/SPX ?


3-45711
vladimir_12
2002-10-24 10:17
2002.11.14
DBase запись не добавляется...


1-45938
Андрусь
2002-10-31 16:05
2002.11.14
Чтобы форма не моргала...


14-46091
MJH
2002-10-25 19:46
2002.11.14
Идея


7-46176
dkDimon
2002-07-13 22:44
2002.11.14
Отключение Пуска и клавиатуры