Главная страница
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.017 c
14-46088
Ricks
2002-10-25 18:22
2002.11.14
Фильм...


14-46108
Undert
2002-10-24 21:28
2002.11.14
Windows XP Service Pack 1 !!!


3-45777
Zloy
2002-10-22 04:14
2002.11.14
Приветствую!!! Не посоветуете, плиз, как базу парадокс сохранить


1-45835
Delph
2002-11-05 11:49
2002.11.14
Как установить курсор на последнюю строку Memo?


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