Форум: "Основная";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];
ВнизКак выяснить, работает ли программа или уже завершилась? Найти похожие ветки
← →
Olsher (2004-06-15 10:08) [0]Как узнать, закончила ли свою работу другая программа, запущенная из моей программы?
← →
Fay © (2004-06-15 10:11) [1]Запускать её самому или перебирать процессы
← →
Fay © (2004-06-15 10:12) [2]Так. Торможу 8)
← →
Mim1 © (2004-06-15 10:18) [3]
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;
← →
Тимохов © (2004-06-15 10:19) [4]http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988621841&n=15
возможно это поможет.
нужно waitforsingleobject делать не infinite (т.е. бесконечно), а 0, т.е. тут же получить signaled (т.е. завершился) ли процесс или нет. надо проверять р-т этой функции. посмотри в msdn про waitforsingleobject
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.027 c