BAT Dosyası Çalışırken Programa Müdahale etme

Yapmak istediğiniz işle ilgili doğru bileşeni bulmak için burayı kullanabilirsiniz. Sadece bulmak için, diğer sorular Programlama forumuna lütfen.
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.
Cevapla
takatas
Üye
Mesajlar: 7
Kayıt: 10 Mar 2015 10:31

BAT Dosyası Çalışırken Programa Müdahale etme

Mesaj gönderen takatas »

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;
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: BAT Dosyası Çalışırken Programa Müdahale etme

Mesaj gönderen thelvaci »

Copy & Paste programcılığı yapmıyor olsa idiniz; sorununuzun WaitForSingleObject ile INFINITE(49.7 gün) bekleme kodunda olduğunu zaten bilirdiniz.
takatas
Üye
Mesajlar: 7
Kayıt: 10 Mar 2015 10:31

Re: BAT Dosyası Çalışırken Programa Müdahale etme

Mesaj gönderen takatas »

Güzel bir cevap vermişsiniz. Teşekkürler.
takatas
Üye
Mesajlar: 7
Kayıt: 10 Mar 2015 10:31

Re: BAT Dosyası Çalışırken Programa Müdahale etme

Mesaj gönderen takatas »

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.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: BAT Dosyası Çalışırken Programa Müdahale etme

Mesaj gönderen mrmarman »

takatas yazdı:Bat Dosyası çalışırken aynı anda da programı kullanmak istiyorum ama bat çalıştığı için programa müdahale edemiyorum.
- Programda müdahale imkanın olsaydı BAT işlemi sürerken ne yapmak istiyoruz ?

- 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.
Resim
Resim ....Resim
PROGRAMADOR
Üye
Mesajlar: 239
Kayıt: 04 Oca 2008 01:53
Konum: Karşıyaka/İzmir

Re: BAT Dosyası Çalışırken Programa Müdahale etme

Mesaj gönderen PROGRAMADOR »

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...
Kullanıcı avatarı
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

Mesaj gönderen sabanakman »

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. - .
Cevapla