Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.01 c
14-27224
lds78
2002-08-09 10:59
2002.09.09
ZIP/UNZIP без VCL


14-27203
esprit_bel
2002-08-12 08:53
2002.09.09
Windows


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


4-27276
Ильдар
2002-07-18 13:55
2002.09.09
узнать IPадрес


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский