![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как выяснить, работает ли программа или уже завершилась? [D5, Win95/98]
Olsher © (2004-06-15 10:08:00)Как узнать, закончила ли свою работу другая программа, запущенная из моей программы?
Тимохов (2004-06-15 10:19:00) [1]http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988621841&n=15
возможно это поможет.
нужно waitforsingleobject делать не infinite (т.е. бесконечно), а 0, т.е. тут же получить signaled (т.е. завершился) ли процесс или нет. надо проверять р-т этой функции. посмотри в msdn про waitforsingleobject
Mim1 (2004-06-15 10:18:00) [2]
procedure TForm1.Button1Click(Sender: TObject);
var si:STARTUPINFO;
pi:PROCESS_INFORMATION;
xc:cardinal;
begin
ZeroMemory(@si,sizeof(si));
si.cb:=SizeOf(si);
si.wShowWindow := SW_HIDE;
si.dwFlags := STARTF_USESHOWWINDOW;
CreateProcess(nil,
{$ifdef home}
PCHAR('rar32 a test.zip '+'C:\Video\nge\nge-01.viv')
{$else}
PCHAR('rar32 a test.zip '+Application.EXENAME)
{$endif}
,nil,nil,false,NORMAL_PRIORITY_CLASS,nil,nil,si,pi);
CloseHandle(Pi.hThread);
with tanimate.Create(self) do
begin
Parent := self;
Align := alClient;
BringToFront;
CommonAVI := aviCopyFiles;
Active := True;
StopFrame := 34;
while WaitForSingleObject(Pi.hProcess, 10) = WAIT_TIMEOUT do
Application.ProcessMessages;
free;
end;
if GetExitCodeProcess(Pi.hProcess,xc) then
showMessage(inttostr(xc));
CloseHandle(Pi.hProcess);
end;
Fay (2004-06-15 10:12:00) [3]Так. Торможу 8)
Fay (2004-06-15 10:11:00) [4]Запускать её самому или перебирать процессы