Makale Özeti

Herkeze selamlar, bu makalemizde Windows isletim sistemlerinin genelde hepsinde gordugumuz Task Maganer yapisini inceleyecegiz. Task Manager sayesinde o an bilgisayarimizda calisan her programi gorebilir, bellek uzerinde ne kadarlik source kullandigini izleyebiliriz. Bu makale ile visual Vb#.net uygulamasi gelistirerek Frameworkteki Process class larini daha iyi anlamaya calisacagiz.

Makale

Kendi Task Managerimizi Olusturalim

Herkeze selamlar, bu makalemizde Windows isletim sistemlerinin genelde hepsinde gordugumuz Task Maganer yapisini inceleyecegiz.
Task Manager sayesinde o an bilgisayarimizda calisan her programi gorebilir, bellek uzerinde ne kadarlik source kullandigini izleyebiliriz.
Bu makale ile visual Vb#.net uygulamasi gelistirerek Frameworkteki Process class larini anlamaya calisacagiz.

 

Simdi uygulamamizi gelistirmeye baslayalim.

Uygulamamizda 4 asamadan olucak ;
1- Program calistiginda o an sistemimizde calisan bütün processlerin listesini gösterecek
2- Yenile dügmesi ile process listesini güncel tutacagiz
3- Detay Dügmesi ile listeden seçtigimiz bir process hakkinda detayli bilgi alabilecegiz
4- Sonlandir Dügmesi ile listeden seçtigimiz bir processi sonlandirabilecegiz (kill it :)

 

Ilk olarak yeni actigimiz VB.NET projemizdeki formumuza asagidaki resimdeki gibi basit kontrol yerlestirdim.

                  

Code Behind kismina geçtigimizde yapilmasi gereken ilk islem

Code Behind kısmına geçtigimizde yapilmasi gereken ilk islem

 

Imports System.Diagnostics


Diagnostics Class Library’ sini tanımlamak olacaktır. Bu Library sayesinde bilgisayarımızdaki Process’lere ulaşmış olacağız.

System.Diagnostics.Process isimli Class Library’inin özellikerinin detayini

http://msdn2.microsoft.com/en-us/library/76yt3c0w(en-US,VS.80).aspx

adresinden bulabilirsiniz. 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

        makina_adi = System.Environment.MachineName.ToString()

        Call listele()

     End Sub

      Form Load fonsiyonunda ilk olarak, diger fonksiyonlarda da lazim olacagi icin  local bilgisayar adini public tanimlanmis olan
 makina_adi string’ine atadim . Daha sonra listeleme islemini yapacak olan fonsiyonumu cagirdim. Simdi bu fonsiyonun kodlarini yazalim. 

Sub listele()

        Dim Prc() As Process

        Dim listviewItemProcess As ListViewItem 

        Try

            ListView1.Items.Clear() 

            Prc = Process.GetProcesses(makina_adi)

            Dim i As Integer 

            For i = 0 To UBound(Prc)

              listviewItemProcess = ListView1.Items.Add(Prc(i).ProcessName)

              listviewItemProcess.SubItems.Add(Prc(i).MainWindowTitle)

              listviewItemProcess.SubItems.Add(Prc(i).Responding)

              listviewItemProcess.SubItems.Add(Prc(i).Id)

            Next

        Catch ex As Exception

            ListView1.Items.Add("Hata"

        End Try

    End Sub

     Listele() fonsiyonunu incelediginizde mantigin basit oldugunu göreceksiniz. Yapilan ilk is makina_adi ni kullanarak  bilgisyarda
calisan processleri Prc ‘ye atadim. Daha sonra Process Class’inin özelliklerini taşıyan Prc ile bilgisayarimizda calisan processlerin isimlerine,
Idlerine, process başlıklarına ulaştım.

    Bu listeleme ekranini kendininize göre düzenleyebilir ve önem siraniza göre programi kullanabilirsiniz. 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Call listele()

    End Sub

 Yenile düğmesinin kodunda ise herhangi extra yazilmis bir code yok. Burda yapilan tek islem processlerin listesini veren fonsiyonunu cagirmak. 

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Dim Prc As Process 
   Try

   Prc = Process.GetProcessById(ListView1.SelectedItems(0).SubItems(3).Text)

   MessageBox.Show("Oturum ID : " & Prc.Id & "" & " Start Time: " & Prc.StartTime.ToShortDateString() & " " & Prc.StartTime.ToShortTimeString() & " Phisical Hafıza : " & Prc.WorkingSet / 1024 & " K")

   Catch ex As Exception

   End Try

   End Sub

 Detay düğmesinin kodunda , listeden secilen processin detaylarini görebiliriz. Örneğin ben burda sadece Session Id , Start Time, ve
Phisical Memoryi özelliklerini gösterdim. Tabiki siz burda kendi detay message boxunu oluşturabilirsiniz. Aşagidaki resimde bu uygumanin
gosterdigi detay message boxunu görüyorsunuz

                   

 Uygulamanin önemli olan son noktasi ise seçilen Process’i kill etmek yani çalismasini durdurmak, Task Managerden ucurmaktir.

 

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim Prc As Process 

    Try
    
Prc=Process.GetProcessById(ListView1.SelectedItems(0).SubItems(3).Text)

     Prc.Kill()

     ListView1.Items.Remove(ListView1.SelectedItems.Item(0))

    Catch

      MessageBox.Show("Process Kill Edilemedi", MessageBoxButtons.OK,   

      MessageBoxIcon.Stop)

     End Try 

    End Sub


Sonlandir dügmesinde isi üstlenen kisim yine Process özelliklerini tasiyan Prc valuesine listeden secilen processimizin ID idsini
atadiktan sonra Prc.Kill()  komutu ile Prc ye yüklenen processin calismasi durdurulmus oluyor.

Herkeze çalışmalarında başarılar dilerim.

Task Manager Uygulaması