Форум: "WinAPI";
Текущий архив: 2002.11.14;
Скачать: [xml.tar.bz2];
ВнизКак дождаться завершения запущенной программы? Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.11.14;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c