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 » 26 Kas 2015 11:56

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: 769
Kayıt: 11 Tem 2010 06:17
Konum: Istanbul
İletişim:

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

Mesaj gönderen thelvaci » 26 Kas 2015 03:34

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 » 26 Kas 2015 04:12

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 » 26 Kas 2015 04:35

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: 4731
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

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

Mesaj gönderen mrmarman » 26 Kas 2015 04:51

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

PROGRAMADOR
Üye
Mesajlar: 232
Kayıt: 04 Oca 2008 01:53
Konum: Karşıyaka/İzmir

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

Mesaj gönderen PROGRAMADOR » 26 Kas 2015 08:25

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: 3040
Kayıt: 17 Nis 2006 07:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

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

Mesaj gönderen sabanakman » 01 Ara 2015 11:06

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