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