How Do I ? - 3

Yağız Gönüler tarafından yayınlanmıştır 13. Ağustos 2008 12:11

"How do I ?" makale serisini aslında 2 bölüm halinde sunucaktım ve öylede yaptım. Ancak bu makalelerle edindiğimiz pratikliğimiz ile C#.Net düzeyimizi biraz daha yukarıya taşımak amacıyla birde kendi Task Manager'ımızı yazalım diye düşündüm. Neticede bu da bir pratiktir ve bazı konuları anlamamıza kolaylık sağlayacaktır.

Task Manager Windows işletim sistemlerinde çalışan sistem programı ve uygulamaları gösteren, ayrıca bunları sonlandırmaya olanak sağlayan bir programdır.Windows'da highest priority ile çalışan bir programdır, nt ve 2000'de ctrl+shift+esc kombinasyonuyla, win9x'de ctrl+alt+del ile çalıştırılabilir.Ayrıca çalıştır->taskmgr.exe komutu ilede çalıştırabilir.

Bazı durumlarda task manager, istemeden de olsa devre dışı bırakılabilir. Bu tip durumlarda izlenilecek yol şöyledir;
"Başlat" menusünden "Çalıştır" seçilip "gpedit.msc" yazılır. Karşımıza "grup ilkesi" çıkar. Buradan "kullanıcı yapılandırması" -> "yönetim şablonları"
-> "sistem" -> "ctrl+alt+delete seçenekleri" burada "görev yöneticisini devre kaldır" üzerine iki kere tıklayıp "devre dışı" seçeneğini etkinleştirip "uygula" dediğimiz zaman eskisi gibi çalışır durumda olacaktır.

Task Manager'da çalışan processler hakkında detaylı bilgi için:
http://www.liutilities.com/products/wintaskspro/processlibrary/

Task Manager hakkında detaylı bilgi verdikten sonra şimdi kısaca uygulamamızın temelini maddeliyim.
-Program açıldığında sistemimizde çalışan tüm application ve processler görülecektir
-Getir buttonu ile yenileme işlemini yapılabilecektir
-Mouse ile listview'imize sağ tıkladığımızda gelen menüden "Durdur" tıklandığında, seçtiğimiz uygulama yada processin çalışması son bulacaktır.

Böylelikle bu uygulamamızda System.Diagnostics ve System.Diagnostics.Process sınıflarını tanımış ve pratik yapmış olacağız.
System.Diagnostics sınıfı hakkında detaylı bilgi için;
http://msdn2.microsoft.com/en-us/library/ms293060.aspx
System.Diagnostics.Process hakkında detaylı bilgi için;
http://msdn2.microsoft.com/en-us/library/76yt3c0w.aspx

Öncelikle formumuzun design tarafındaki kodlarını belirtiyorum;

private void InitializeComponent()

{

this.components = new System.ComponentModel.Container();

this.button1 = new System.Windows.Forms.Button();

this.textbox1 = new System.Windows.Forms.TextBox();

this.panel1 = new System.Windows.Forms.Panel();

this.panel2 = new System.Windows.Forms.Panel();

this.listview1 = new System.Windows.Forms.ListView();

this.Isim = new System.Windows.Forms.ColumnHeader();

this.ID = new System.Windows.Forms.ColumnHeader();

this.Oncelik = new System.Windows.Forms.ColumnHeader();

this.RAM = new System.Windows.Forms.ColumnHeader();

this.ModulSayisi = new System.Windows.Forms.ColumnHeader();

this.DosyaAdi = new System.Windows.Forms.ColumnHeader();

this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);

this.durdurToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();

this.panel1.SuspendLayout();

this.panel2.SuspendLayout();

this.contextMenuStrip1.SuspendLayout();

this.SuspendLayout();

//

// button1

//

this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;

this.button1.Location = new System.Drawing.Point(183, 3);

this.button1.Name = "button1";

this.button1.Size = new System.Drawing.Size(75, 23);

this.button1.TabIndex = 0;

this.button1.Text = "Getir";

this.button1.Click += new System.EventHandler(this.button1_Click);

//

// textbox1

//

this.textbox1.Location = new System.Drawing.Point(12, 5);

this.textbox1.Name = "textbox1";

this.textbox1.Size = new System.Drawing.Size(162, 20);

this.textbox1.TabIndex = 1;

//

// panel1

//

this.panel1.Controls.Add(this.textbox1);

this.panel1.Controls.Add(this.button1);

this.panel1.Dock = System.Windows.Forms.DockStyle.Top;

this.panel1.Location = new System.Drawing.Point(0, 0);

this.panel1.Name = "panel1";

this.panel1.Size = new System.Drawing.Size(652, 34);

this.panel1.TabIndex = 3;

//

// panel2

//

this.panel2.Controls.Add(this.listview1);

this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;

this.panel2.Location = new System.Drawing.Point(0, 34);

this.panel2.Name = "panel2";

this.panel2.Size = new System.Drawing.Size(652, 348);

this.panel2.TabIndex = 4;

//

// listview1

//

this.listview1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {

this.Isim,

this.ID,

this.Oncelik,

this.RAM,

this.ModulSayisi,

this.DosyaAdi});

this.listview1.ContextMenuStrip = this.contextMenuStrip1;

this.listview1.Dock = System.Windows.Forms.DockStyle.Fill;

this.listview1.Location = new System.Drawing.Point(0, 0);

this.listview1.Name = "listview1";

this.listview1.Size = new System.Drawing.Size(652, 348);

this.listview1.TabIndex = 0;

this.listview1.UseCompatibleStateImageBehavior = false;

this.listview1.View = System.Windows.Forms.View.Details;

this.listview1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.listview1_MouseDown);

//

// Isim

//

this.Isim.Text = "˜sim";

this.Isim.Width = 100;

//

// ID

//

this.ID.Text = "ID";

//

// Oncelik

//

this.Oncelik.Text = "Öncelik";

//

// RAM

//

this.RAM.Text = "RAM";

this.RAM.Width = 120;

//

// ModulSayisi

//

this.ModulSayisi.Text = "Modül Sayısı";

//

// DosyaAdi

//

this.DosyaAdi.Text = "Dosya Adı";

this.DosyaAdi.Width = 250;

//

// contextMenuStrip1

//

this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {

this.durdurToolStripMenuItem});

this.contextMenuStrip1.Name = "contextMenuStrip1";

this.contextMenuStrip1.Size = new System.Drawing.Size(119, 26);

//

// durdurToolStripMenuItem

//

this.durdurToolStripMenuItem.Name = "durdurToolStripMenuItem";

this.durdurToolStripMenuItem.Size = new System.Drawing.Size(152, 22);

this.durdurToolStripMenuItem.Text = "Durdur";

this.durdurToolStripMenuItem.Click += new System.EventHandler(this.durdurToolStripMenuItem_Click);

//

// Form1

//

this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

this.ClientSize = new System.Drawing.Size(652, 382);

this.Controls.Add(this.panel2);

this.Controls.Add(this.panel1);

this.Name = "Form1";

this.Text = "Form1";

this.Load += new System.EventHandler(this.Form1_Load);

this.panel1.ResumeLayout(false);

this.panel1.PerformLayout();

this.panel2.ResumeLayout(false);

this.contextMenuStrip1.ResumeLayout(false);

this.ResumeLayout(false);

}

#endregion

private System.Windows.Forms.Button button1;

private System.Windows.Forms.TextBox textbox1;

private System.Windows.Forms.Panel panel1;

private System.Windows.Forms.Panel panel2;

private System.Windows.Forms.ListView listview1;

private System.Windows.Forms.ColumnHeader Isim;

private System.Windows.Forms.ColumnHeader ID;

private System.Windows.Forms.ColumnHeader Oncelik;

private System.Windows.Forms.ColumnHeader RAM;

private System.Windows.Forms.ColumnHeader ModulSayisi;

private System.Windows.Forms.ColumnHeader DosyaAdi;

private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;

private System.Windows.Forms.ToolStripMenuItem durdurToolStripMenuItem;

}



Bu kodlardan sonra formun görünümü şu şekilde olacaktır:




Şimdi ise uygulamamızın calısması ıcın gereklı olan kodlarımızı yazıyorum.
Bu kodların çeşitli aralıklarında comment satırları kullanarak kodlarımı daha anlaşılır ve daha geliştirilebilir bir hale getiriyorum.
Kodumuzu yazarken System.Diagnostics sınıfını projemize eklemeyi unutmuyoruz.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Diagnostics;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace MyTaskManager

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

//pname isminde global bir degisken tanimliyoruz

string pname = "";

private void button1_Click(object sender, EventArgs e)

{

//getir isimli buttonumuza tıklandığında

//yenileme islemi yapilarak sistemimizde calisan

//tum uygulama ve processler gorunecektir

this.listview1.Items.Clear();

string name = this.textbox1.Text;

Process[] pler = Process.GetProcesses(name);

//calsan uygulama yada processlerimiz hakkında

//detayli bilgileri, kullanilan rami, ID'sini, dosya yolunu ve modul sayisini

//gorebilecegimiz kodlarimizi yaziyoruz

for (int a=0; a <pler.Length; a++)

{

this.listview1.Items.Add(pler[a].ProcessName);

this.listview1.Items[a].SubItems.Add(pler[a].Id.ToString());

this.listview1.Items[a].SubItems.Add(pler[a].BasePriority.ToString());

this.listview1.Items[a].SubItems.Add(string.Format("{0:#,##0}", (pler[a].VirtualMemorySize / 1024) + "K"));

try

{

this.listview1.Items[a].SubItems.Add(pler[a].Modules.Count.ToString());

this.listview1.Items[a].SubItems.Add(pler[a].Modules[0].FileName);

}

catch (Exception ex)

{

this.listview1.Items[a].SubItems.Add("0");

this.listview1.Items[a].SubItems.Add("");

}

}

}

private void Form1_Load(object sender, EventArgs e)

{

//formun acilisinda textboximiza host adimizi getiriyoruz

this.textbox1.Text = System.Net.Dns.GetHostName();

Application.Idle += new EventHandler(Application_Idle);

}

private void Application_Idle(object sender, EventArgs e)

{

if (!this.textbox1.ContainsFocus)

{

int eski = this.listview1.Items.Count;

int yeni = Process.GetProcesses(this.textbox1.Text).Length;

if (eski != yeni)

{

this.button1.PerformClick();

}

}

}

private void durdurToolStripMenuItem_Click(object sender, EventArgs e)

{

//mouse'a sag tiklandiginda gelen menudeki

//durdura tiklandigimizda o an uzerinde bulunan gorevin sonlanmasi icin

//gerekli olan kodlarimizi yaziyoruz

Process.GetProcessesByName(pname)[0].Kill();

this.button1.PerformClick();

}

private void listview1_MouseDown(object sender, MouseEventArgs e)

{

if (e.Button == MouseButtons.Right)

{

pname = this.listview1.GetItemAt(e.X, e.Y).Text;

}

}

}

}



Uygulamamızın çalışma anındaki görüntüsü şu şekilde olmalıdır:


Bu sefer gerçektende "How Do I ?" makale dizisinin sonuna geldik :)
Umarım pratikliğimizi ve c#.net düzeyimizi geliştirebildiğimiz bir makale dizisi olmuştur.
Uygulamalırımızın kullanabilirliğini ve geliştirilme düzeyini arttıracağına inanıyorum.

Farklı makalelerde tekrar görüşmek üzere.
Kafamızdan "How Do I ?"lar eksik olmasın :)

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Makaleler | Yazılım Geliştirme | Windows



Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.
Sitedeki kod ve tasarım değişiklikleri ise Yağız Gönüler tarafından geliştirilmiştir.
2008 © www.yagizgonuler.com

Paslaş

       

Anket

Mesleğinizden arta kalan zamanınızı nelere harcıyorsunuz?







Sonuçlar

Calendar

<<  Şubat 2012  >>
PaSaÇaPeCuCuPa
303112345
6789101112
13141516171819
20212223242526
2728291234
567891011

Yazıları geniş takvimde göster

Ne(ler) Okuyorum?


Ne Dinliyorum?

Zeki Müren - Dediler Zamanla Hep (3 saat önce)
Şükrü Tunar - Rast Taksim (3 saat önce)
Şükrü Tunar - Aydın Zeybeği (3 saat önce)
Şükrü Tunar - Uşşak Çiftetelli (3 saat önce)
Şükrü Tunar - Uşşak Taksim (3 saat önce)
Şükrü Tunar - Anadolu Oyun Havası (4 saat önce)
Şükrü Tunar - Hüzzam Taksim (4 saat önce)
Şükrü Tunar - Hovarda Zeybeği (4 saat önce)
Şükrü Tunar - Uşşak Çiftetelli (4 saat önce)
Şükrü Tunar - Uşşak Taksim (4 saat önce)

İstanbul'da Hava

ISTANBUL

Ziyaretçi Sayısı