Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Komut Satırından (CMD) Toplu İş Yaptırmak
#1
Merhaba,
Windows hedef platformu için bir çoğumuz uygulama yazarken DOS ekranında komut çalıştırma ihtiyacı duymuşuzdur. 
Bu kapsamda üretilen ve Ücretsiz olarak dağıtılan son derece etkili ve kullanışlı bir Component'ten bahsederek, kullanımı konusunda bilgiler vermek istiyorum.
Kullanacağımız component TurboPack DOSCommand.

Genel Özellikleri;
  • Komut satırında herhangi bir veya birden fazla iş yaptırıma (com, exe ve bat dosyalarını doğrudan çalıştırma),
  • Komutların işlem sonucunu kendi uygulamanızda görebilme (OnNewChar ve OnNewLine olayları ile OutputLnes ve Lines özellikleri),
  • Komutun bittiğini algılama (OnTerminateProcess ve  OnTerminated olayları),
  • Varsayılan dizini belirleyebilme (CurrentDir özelliği),
  • Geçici Ortam Değişkenleri ekleyebilme (Environment özelliği),
  • Karakter Decode ve Encode işlemleri yapabilme (OnCharEncoding ve OnCharDecoding olayları),
  • Çalışmayan ve Hata oluşturan komutları ve hata türünü yakalama (OnExecuteError olayı),
  • Çalıştırılacak Komutların İşletim Sisteminde öncelik sırasını belirleyebilme (Priority özelliği; aldığı değerler----> HIGH_PRIORITY_CLASS, IDLE_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS ve REALTIME_PRIORITY_CLASS),
  • Satır Satır Komut işletebilme (SendLine özelliği)
  • Çalışma anında iş durumu hakkında bilgi edinebilme (OnTerminateProcess olayı ve ProcessInformation özelliği),

Component'i indirmek için: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Örnek Bir Uygulama;

Yukarıdaki linkten TurboPack - DOSCommand Component'ini indirip kuralım.
Tool Palette Penceresi, DOSCommand sekmesinden  form üzerine bir adet DosCommand nesnesi yerleştirelim.


Form üzerine komutları çalıştırmak ve komut geri dönüş değerlerini almak için birer adet Edit, Button ve Memo nesnesi yerleştirelim ve tasarımını aşağıdaki gibi yapalım.


Bir veya birden fazla komut içeren bir toplu işlem dosyası (Batch dosyası) oluşturalım. Benim kullanacağım örnek dosya içeriği aşağıdaki gibi olacak.


Butonu çift tıklayıp, OnClick olayına aşağıdaki kodları yazalım.

procedure TForm1.Button1Click(Sender: TObject);
begin
 DosCommand1.Priority := HIGH_PRIORITY_CLASS; {Çalışacak komutun iş önceliğini Yüksek olarak belirledik}
 DosCommand1.CommandLine := edtKomut.Text; {Çalıştırılacak Komut veya Komutlar listesi}
 DosCommand1.Execute; {Komutları çalıştır}
end;

DosCommand nesnesini seçelim ve Object Inspector Penceresi Events sekmesinde OnNewLine olayını çift tıklayalım ve aşağıdaki kodları yazalım.

procedure TForm1.DosCommand1NewLine(ASender: TObject; const ANewLine: string;
 AOutputType: TOutputType);
begin
 case AOutputType of
   TOutputType.otEntireLine:
     Memo1.Lines.Add(ANewLine);
 end;
end;

Son olarak uygulamayı çalıştırıp, sonucuna bakalım.


İyi çalışmalar...
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#2
Bu arada toplu iş dosyasının ilk satırında komutları gizlemek için kullandığım echo off komutunun başında @ işareti olması gerekiyordu (@echo off). Konumuzla pek alakası yok ama hatamı sonradan gördüğüm için düzeltme yapayım dedim.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter





Konuyu Okuyanlar: 1 Ziyaretçi