Merhabalar;
Delphi xe2 ile küçük bir uygulama yazdım. Yazdığım uygulama da bir bat dosyası çalıştırıyorum. Buraya kadar problemim yok. Bat Dosyası çalışırken aynı anda da programı kullanmak istiyorum ama bat çalıştığı için programa müdahale edemiyorum. BAT ı SW_HIDE, SW_SSHOWNORMAL gibi parametrelerde de denedim sonuç değişmedi. Bat ı çalıştırdığım kod aşağıdadır. Teşekkürler.
function TForm1.ExecAndWait(const Filename, Params: string; adim : integer; WindowState: word): boolean;
var
SUInfo: TStartupInfo;
ProcInfo: TProcessInformation;
CmdLine: string;
begin
CmdLine := '"' + Filename + '"' + Params;
FillChar(SUInfo, SizeOf(SUInfo), #0);
with SUInfo do
begin
cb := SizeOf(SUInfo);
dwFlags := STARTF_USESHOWWINDOW;
wShowWindow := WindowState;
end;
Result := CreateProcess(nil, PChar(CmdLine), nil, nil, FALSE,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil,
PChar(ExtractFilePath(Filename)), SUInfo, ProcInfo);
if Result then
WaitForSingleObject(ProcInfo.hProcess, INFINITE);
end;
BAT Dosyası Çalışırken Programa Müdahale etme
Forum kuralları
Bu forum sadece yapacağınız işle alakalı doğru bileşeni bulmak içindir. Şöyle bir şey yapmam lazım, hangi bileşeni kullanıyım diyorsanız, doğru yerdesiniz.
Bu forum sadece yapacağınız işle alakalı doğru bileşeni bulmak içindir. Şöyle bir şey yapmam lazım, hangi bileşeni kullanıyım diyorsanız, doğru yerdesiniz.
Re: BAT Dosyası Çalışırken Programa Müdahale etme
Copy & Paste programcılığı yapmıyor olsa idiniz; sorununuzun WaitForSingleObject ile INFINITE(49.7 gün) bekleme kodunda olduğunu zaten bilirdiniz.
Re: BAT Dosyası Çalışırken Programa Müdahale etme
Güzel bir cevap vermişsiniz. Teşekkürler.
Re: BAT Dosyası Çalışırken Programa Müdahale etme
Ben bir döngü ile bat ı tekrar tekrar çalıştırıyorum. Birinci bat bitmeden diğer bat ı tetiklememem gerekiyor. bu nedenle WaitForSingleObject ile beklemesi gerektiğini düşündüm.
Re: BAT Dosyası Çalışırken Programa Müdahale etme
- Programda müdahale imkanın olsaydı BAT işlemi sürerken ne yapmak istiyoruz ?takatas yazdı:Bat Dosyası çalışırken aynı anda da programı kullanmak istiyorum ama bat çalıştığı için programa müdahale edemiyorum.
- Bu sorunsalı bir de şu açıdan bakarak düşünmeyi dener misin...? BAT değil de Delphi'de bir Procedure olsaydı, procedure içerisindeki işlemler yürürken programa ne tür bir şey yaptırmak isteyebilirsin ?
- Cevabını değerlendirdiğin an bu soruya da yanıt konusunda %50 yol katetmiş olacaksın.
-
- Üye
- Mesajlar: 239
- Kayıt: 04 Oca 2008 01:53
- Konum: Karşıyaka/İzmir
Re: BAT Dosyası Çalışırken Programa Müdahale etme
Muharrem Bey'e katılıyorum. Thread oluşturma ya da application processmessage düşünülebilir.
In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...
Şüpheden sanık/özgürlük yararlanır...
- sabanakman
- Kıdemli Üye
- Mesajlar: 3077
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: BAT Dosyası Çalışırken Programa Müdahale etme
Asında benzeri durumlara bir çok kişi ihtiyaç duymuştur ve iyi bir araştırma ile bu örneklere ulaşmak mümkündür. Hazır çalışan örnek öğrenme açısından geliştiriciyi tembelleştirdiği gibi araştırmaya meyli olanları ise geliştirme potansiyeli barındırmaktadır. Yakın zaman önce .bat dosyası çalışırken bekleyen ve bu esnada konsol ekranda akan bilgileri elde eden bir bileşen örneği yüklenmişti aslında. Eğer while ConsoleIO.IsRunning do Application.ProcessMessages; //<- Bitmesini bekle, satırını kullanmazsanız .bat dosyasının çalışması ayrı bir kanalda devam ederken program ana kanalı çalışmaya devam edecektir.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .