Giris
Windows uygulamaları içinde Dos Command Line aracı üzerinde yapabildigimiz herseyi yapabiliriz. Windows formaları içerisine bi takım kodlar ekleyerek CommandLine aracını kullanmak oldukça basitdir. Bu kodları System.Diagnostics NameSpace'i içerisindeki Process classının altında bulabiliriz.
System.Diagnostics
Process Class
Local Sistem processlerini baslatmak ve durdurmamamıza, remote processlere ve locale erismemize izin veren bir classtır. Kullanımı asagıdaki gibidir.
VB
Public
Class
Process Inherits
Component
Dim
instance As
Process
C#
Public
Class
Process: Component
Process instance;
Process, PC üzerinde çalısarak bir processe erismeyi saglar. Bir Process belirli zamanlarda bir uygulamayı çalıstırır. Process görüntüleme ve kontrol uygulamalarını baslatmak ve durdurmak için çok kullanıslıdır. Process componenetini kullanarak yeni bir process baslatabilir yada çalıstırılacak processlerin listesini belirleyebilirsiniz.
Evet arkadaslar Projemizde kullanacagımız namespace ve sınıfımızı tanıdıktan sonra örnegimize geçelim.
Örnek
Örnek uygulamamızda Command Line aracındaki gibi komutları yazıp çalıstıracagız. Örnek vermek gerekirse Ipconfig yazıp ip bilgimizi, ping 127.0.0.1 yazıp kendi makinamızı pinglememizi, notepad yazıp Notepad'i çalıstıracagız(Simdilik aklıma gelenler bunlar).
Bu açıklamalardan sonra Visual Studio üzerinde bir windows uygulaması açalım.
Projemizi olusturduktan sonra formumuza,
1 Button ve 2 de textbox ekleyelim. 1. Textbox'a cmd üzerinde yazdıgımız komutları yazacagız ve 2. textboxda da sonucu ekrana yazdıracagız.
Evet yukarıdada belirttigim gibi butona tıkladıgımızda CMD'deki gibi komutumuz çalıstırılacak. Simdi bu söylediklerimizi koda dökelim.
C#
private
void
btnRun_Click(object
sender, EventArgs
e)
{
System.Diagnostics.Process
p = new
System.Diagnostics.Process
();//process’in instancesini aldık
p.StartInfo.FileName = "cmd"
;//Çalıstırılacak file
p.StartInfo.Arguments = "/c "
+ textBox1.Text;//file içerisine gönderilecek arguments
p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle
.Hidden;//Komut çalıstıgında Cmd penceresinin açılmasını engelledik
p.StartInfo.CreateNoWindow = true
;//Pencere Açılmasını engeller
p.StartInfo.RedirectStandardOutput = true
;
p.StartInfo.UseShellExecute = false
;
p.Start();//process Çalıstırılır
string
output = p.StandardOutput.ReadToEnd();//Çalısan Processin sonucu
textBox2.Text = output;//Sonuç textboxa yazılır
}
|
VB#
Private
Sub
btnRun_Click(ByVal
sender As
System.Object, ByVal
e As
System.EventArgs) Handles
btnRun.Click
Dim
p As
New
System.Diagnostics.Process()
p.StartInfo.FileName = "cmd"
p.StartInfo.Arguments = "/c "
+ textBox1.Text
p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden
p.StartInfo.CreateNoWindow = True
p.StartInfo.RedirectStandardOutput = True
p.StartInfo.UseShellExecute = False
p.Start()
Dim
output As
String
= p.StandardOutput.ReadToEnd()
textBox2.Text = output
End
Sub
|
Evet kodumuzu yazdık ve artık deneyebiliriz.
Ipconfig yazdık ve sonucumuzu bizim arayüzümüze verdi. Baska bir komut deneyelim. Kendimizi pingleyelim.
Son olarak Hesap makinasınıda çalıstıralım : )
Evet gördügümüz gibi basarılı bir sekilde vs.net içerisinde cmd de yaptıgımız tüm islemleri yaptık.
Bu makalenin de sonuna geldik, baska bir makalede görüsmek üzere basarı ve iyi günler dilerim.
Sem GÖKSU
MCP | MCAD.NET | MCTS
Örnek Kodlar için mail adresimi kullanabilirsiniz
semgoksu@semgoksu.com
Kaynaklar
http://msdn.microsoft.com