30 Ağustos 2012 Perşembe

C# ile Proccess

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

  1. Process Nesnesi Oluşturma:
    • Yeni bir işlemi başlatmak için bir Process nesnesi oluştururuz.
  2. 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.
  3. İşlemi Başlatma:
    • Start() metodu, işlemi başlatır.
  4. İş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