Главная страница
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.02 c
4-46189
[lamer]Barmaglot
2002-09-30 11:05
2002.11.14
Как выключить иконку монитора в trаy, иконку раскладки(рус, лат)?


1-45841
the7guest
2002-11-05 08:10
2002.11.14
Старорежимное добавление в автозагрузку


1-45885
Sego
2002-11-05 17:13
2002.11.14
Работа с памятью


1-45855
ALI2002
2002-11-05 14:21
2002.11.14
перевод числа в строку


3-45663
Kran
2002-10-23 19:54
2002.11.14
Реструктуризация таблицы