Merhaba Webkolog okurları! Bugün C# .Net Framework 4 ve Visual Studio 2010 kullanarak uygulamalarımızdan sistemdeki diğer işlemleri yönetmek için kullandığımız Process sınıfını yakından inceleyeceğiz. Process sınıfı, uygulamalarımızdan harici programları başlatmamızı, onları kontrol etmemizi ve onlar hakkında bilgi almamızı sağlar. Gelin, bu sınıfın temel özelliklerine ve kullanımına birlikte göz atalım.
Process Sınıfı Nedir?
Process sınıfı, çalışan bir uygulamayı temsil eder. Bu
sınıfı kullanarak sistemdeki işlemleri başlatabilir, durdurabilir, izleyebilir
ve onlar hakkında bilgi alabiliriz.
Process Sınıfını Kullanma
- Process Nesnesi Oluşturma:
- Yeni bir işlemi başlatmak için bir Process nesnesi oluştururuz.
- Başlatma Bilgilerini Ayarlama:
- StartInfo özelliği, başlatılacak programın adını, argümanlarını,
çalışma dizinini ve diğer özelliklerini ayarlamak için kullanılır.
- İşlemi Başlatma:
- Start() metodu, işlemi başlatır.
- İşlemi Kontrol Etme:
- Kill() metodu, bir işlemi sonlandırır.
- WaitForExit() metodu, işlemin bitmesini bekler.
Örnek Kullanım
Aşağıdaki örnekte, bir işlemi başlatmayı, argümanlar
vermeyi ve işlemi sonlandırmayı gösteriyoruz:
using System.Diagnostics;
// Çalıştırılacak programın adını belirtin.
process1.StartInfo.FileName = "yol\\prog.exe";
// Çalıştırılacak programın etki alanını belirtir.
process1.StartInfo.Domain;
// Komut satırı argümanlarını belirtin.
process1.StartInfo.Arguments = "dosya1.txt dosya2.txt";
// Çalışma dizinini belirtin.
process1.StartInfo.WorkingDirectory;
// İşlem için pencere oluşturulup oluşturulmayacağını belirtir.
process1.StartInfo.CreateNoWindow = true; // Process için pencere oluşmasın
// İşlem penceresinin stilini belirtin.
process1.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; // Process arka planda çalışsın
// Olayların tetiklenmesini etkinleştirir.
process1.EnableRaisingEvents = true;
// İşlemi başlatın.
process1.Start();
// İşlemi sonlandırın.
process1.Kill();
// İşlemin bitmesini bekleyin.
process1.WaitForExit();
Bu örnekte, process1 adında bir Process nesnesi
oluşturduk. FileName özelliği ile çalıştırılacak programın adını, Arguments
özelliği ile komut satırı argümanlarını belirledik. CreateNoWindow ve
WindowStyle özellikleri ile işlemin görünürlüğünü ayarladık. Ardından, Start()
metodu ile işlemi başlattık, Kill() metodu ile sonlandırdık ve WaitForExit()
metodu ile bitmesini bekledik.
Ek Örnek: Not Defterini
Kontrol Etme
Aşağıdaki örnekte, çalışan bir Not Defteri işlemini
bulmayı, penceresini ön plana getirmeyi ve kapatmayı gösteriyoruz:
using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
using System.Threading;
using System.Windows.Forms;
// Harici bir DLL'den fonksiyonları içe aktarın.
[DllImport("user32.dll")]
internal static extern IntPtr SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll")]
internal static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
// Not Defteri işlemini alın.
Process p = Process.GetProcessesByName("notepad").FirstOrDefault();
// İşlemin hazır olmasını bekleyin.
p.WaitForInputIdle();
// İşlem penceresinin handle'ını alın.
IntPtr h = p.MainWindowHandle;
// Pencereyi ön plana getirin.
SetForegroundWindow(h);
// 2 saniye bekleyin.
Thread.Sleep(2000);
// Alt+F4 tuşlarına basın (pencereyi kapatır).
SendKeys.SendWait("%({F4})");
Bu örnekte, GetProcessesByName() metodu ile çalışan
Not Defteri işlemini aldık. WaitForInputIdle() metodu ile işlemin hazır
olmasını bekledik. SetForegroundWindow() fonksiyonu ile pencereyi ön plana
getirdik. SendKeys.SendWait() metodu ile de Alt+F4 tuşlarına basarak Not
Defteri'ni kapattık. DllImport satırları, harici bir kütüphaneden (user32.dll)
fonksiyonları kullanmamızı sağlar.
Process Sınıfının
Özellikleri
- StartInfo: İşlemi başlatmak için kullanılan bilgileri içeren ProcessStartInfo
nesnesini alır veya ayarlar.
- Id: İşlemin kimlik numarasını alır.
- ProcessName: İşlemin adını alır.
- MainWindowHandle: İşlemin ana penceresinin handle'ını alır.
- Threads: İşlemde çalışan iş parçacıklarını alır.
- Modules: İşlem tarafından yüklenen modülleri alır.
- HasExited: İşlemin tamamlanıp tamamlanmadığını gösterir.
- ExitCode: İşlemin çıkış kodunu alır.
Process Sınıfının
Metotları
- Start(): İşlemi başlatır.
- Kill(): İşlemi sonlandırır.
- WaitForExit(): İşlemin bitmesini bekler.
- GetProcesses(): Sistemdeki tüm çalışan işlemleri alır.
- GetProcessById(int id): Belirli bir kimlik numarasına sahip işlemi alır.
- GetProcessesByName(string processName): Belirli bir ada sahip işlemleri alır.
Sevgili Webkolog okurları, C# .Net Framework 4 ve Visual Studio 2010 kullanarak Process sınıfının temel kullanımını ve bazı önemli özelliklerini bu şekilde incelemiş olduk. Bu sınıf, uygulamalarınızdan sistemdeki diğer işlemleri yönetmenizi ve onlarla etkileşim kurmanızı sağlar.
Webkolog'u takipte kalın!
Hepinize bol işlemli ve başarılı projeler dilerim!
0 yorum:
Yorum Gönder