Merhaba ustalar.
Diyelim winrarı bir dosyayı sıkıştırsın diye çalıştırdık. diğer satırların çalışmaya devam etmesi için winrarın kapanmasını beklemesini istiyorum. Bunu nasıl yapabilirim.
Mesela
işlem1
showmessage('mesaj');
işlem3
işlem4
Diye kodlar yazdığımızda mesaj kapanmadan diğer işlemler gerçekleşmiyor.
aynı çekilde bat dosyalarınada yazdığımız komutlarla bir uygulama çalıştırınca o uygulama kapanmadan sonraki satırlar çalışmıyor.
İşteee bunu delphide nasıl yaparım yani...???
Çalıştırılan programın kapanmasını beklemek.
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Çalıştırılan programın kapanmasını beklemek.
İlgili uygulamayı CreateProcess ile başlatıyorsanız; PROCESS_INFORMATION yapısındaki hProcess elemanını WaitForSingleObject ile INFINITE olarak bekleyebilirsiniz. İlgili uygulamayı ShellExecuteEx ile çalıştırıyorsanız; SHELLEXECUTEINFO yapısı içindeki hProcess elemanını kullanabilirsiniz.
Re: Çalıştırılan programın kapanmasını beklemek.
Kod: Tümünü seç
procedure ExecuteAndWait(const aCommando: string);
var
tmpStartupInfo: TStartupInfo;
tmpProcessInformation: TProcessInformation;
tmpProgram: String;
begin
tmpProgram := trim(aCommando);
FillChar(tmpStartupInfo, SizeOf(tmpStartupInfo), 0);
with tmpStartupInfo do
begin
cb := SizeOf(TStartupInfo);
wShowWindow := SW_HIDE;
end;
if CreateProcess(nil, pchar(tmpProgram), nil, nil, true, CREATE_NO_WINDOW,
nil, nil, tmpStartupInfo, tmpProcessInformation) then
begin
// loop every 10 ms
while WaitForSingleObject(tmpProcessInformation.hProcess, 10) > 0 do
begin
Application.ProcessMessages;
end;
CloseHandle(tmpProcessInformation.hProcess);
CloseHandle(tmpProcessInformation.hThread);
end
else
begin
RaiseLastOSError;
end;
end;
Re: Çalıştırılan programın kapanmasını beklemek.
Bir ekleme de ben yapayım.
CreatePipe methodu ile kanca atıp, dos ekranında komut işletilirken yazılanları ReadFile methodu ile çekerek bir Memoya aktarabilir, kullanıcıların Command ekranında aslında neyi beklediğini anlamasını sağlayabilirsiniz.
CreatePipe methodu ile kanca atıp, dos ekranında komut işletilirken yazılanları ReadFile methodu ile çekerek bir Memoya aktarabilir, kullanıcıların Command ekranında aslında neyi beklediğini anlamasını sağlayabilirsiniz.

Re: Çalıştırılan programın kapanmasını beklemek.
Çook teşekkürler süper işimi görüyor...G.Arkas yazdı:Kod: Tümünü seç
proce.............