Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.09;
Скачать: CL | DM;

Вниз

Как запустить файл, а потом дождаться его завершения   Найти похожие ветки 

 
Lamer86 ©   (2002-08-27 11:59) [0]

Мне необходимо во время выполнения кода запусть exe. А после заверешния его работы, продолжить выполнение кода. Как это сделать? (у программы нет окна, так что FindWindow не подойдет)


 
Skier ©   (2002-08-27 12:01) [1]

>Lamer86
FAQ + CreateProcess


 
Слесарь Матерящийся   (2002-08-27 12:04) [2]

WaitForSingleObject(YourNewProcessHandle,INFINITE)


 
Внук ©   (2002-08-27 12:05) [3]

CreateProcess(...)
CloseHandle(ThreadHandle);
WaitForSingleObject(ProcessHandle);
CloseHandle(ProcessHandle);


 
Tornado ©   (2002-08-27 13:01) [4]

Пример архивации файла, прога ждет пока процесс не закончится, потом продолжает работу. Удачи


var
si:STARTUPINFO;
pi:PROCESS_INFORMATION;
cmdline, a1, p1:string;

ZeroMemory(@si,sizeof(si));
si.cb:=SizeOf(si);
a1 := ExtractFilePath(Application.ExeName) + "Data\Izm_12.mdb";
p1 := ExtractFilePath(Application.ExeName) + "Backup\archiv";
cmdline:=ExtractFilePath(Application.ExeName) + "arj.exe" + " " + "a" + " " + "-e" + " " + p1 + " " + a1;

if not CreateProcess( nil,
PChar(cmdline),
nil,
nil,
False,
0,
nil,
nil,
si,
pi )
then
begin
Application.MessageBox(Не могу выполнить архивацию!","Ошибка", MB_OK+MB_ICONERROR);
Exit;
end;
WaitForSingleObject( pi.hProcess, INFINITE ); {ждет окнчания процесса архивации, пока не будет закрыто окно DOS}
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );


 
MsGuns ©   (2002-08-27 14:33) [5]

То же, что и у Tornado, только осн.прога во время ожидания завершения проигрывания mp3, не висит тупо, а продолжает нормально реагировать на мышу и клаву, т.е. просто работает как обычно

procedure TfrmMain.btStartClick(Sender: TObject);
begin
ComLine := "Exec1 "+frmMain.opdlMuz.FileName;
FillChar(si,SizeOf(si),0);
si.cb := SizeOf(si);
First := true;
if CreateProcess(nil,PChar(ComLine),nil,nil,false,
CREATE_DEFAULT_ERROR_MODE,nil,nil,si,pi) then
begin
frmMain.btStart.Enabled := false;
frmMain.btStop.Enabled := true;
While WaitForSingleObject(pi.hProcess,0)=Wait_TimeOut do
Application.ProcessMessages;
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
frmMain.btStart.Enabled := true;
frmMain.btStop.Enabled := false;
end
else
end;


 
MsGuns ©   (2002-08-27 14:35) [6]

Забыл добавить секцию
var
si: TStartUpInfo;
pi: TProcessInformation;
ComLine: string;



Страницы: 1 вся ветка

Текущий архив: 2002.09.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
1-27026
Yaro
2002-08-23 13:38
2002.09.09
Блокировка выхода в и-нет


1-26960
partizan
2002-08-29 13:15
2002.09.09
Масив


1-27001
Вован
2002-08-29 19:24
2002.09.09
Ошибка времени компиляции


1-27098
Dmitriy Polskoy
2002-08-28 16:42
2002.09.09
используется ли папка другим приложением


14-27235
Tornado
2002-08-15 12:34
2002.09.09
Опрос