Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.013 c
7-27245
Alexander Vorobyov
2002-06-21 16:51
2002.09.09
Ловушка в Сервисе (CBT Hook in NT Service)


4-27266
Lex_!
2002-06-23 04:23
2002.09.09
Объясните как отловить сообщение чужой программы


4-27288
olegg
2002-07-08 16:25
2002.09.09
Мастера, а как получить количество памяти, которое занимает прило


3-26857
Макс 2
2002-08-19 11:41
2002.09.09
Перевод символьной строки в string


4-27283
Storonnik
2002-07-19 18:33
2002.09.09
Как послать приложению нажатие какой-нибудь клавиши?




   Наверх