Главная страница
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.018 c
1-45862
BofA
2002-11-03 19:10
2002.11.14
Вопрос по BlockWrite


4-46203
Дмитрий Иванов
2002-10-05 17:04
2002.11.14
Размеры окна, зная его хендл?


3-45785
Геннадий
2002-10-26 14:29
2002.11.14
Как сохранить DBGrid в (текстовый) файл?


14-46049
iNew
2002-10-25 05:32
2002.11.14
В Win2000 есть такая штука как net send (можно посылать


1-45967
werr
2002-11-04 14:45
2002.11.14
сортировка