How Do I ? - 3

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

l"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g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:

Software | Articles | Windows

Yorum ekle


(Gravatar simgesini gösterecek)  

  Country flag

biuquote
  • Yorum
  • Canlı önizleme
Loading





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

Şifahen değil acilen!

Anket

Yazılım geliştirirken en keyif aldığınız alan hangisi?




Sonuçlar

Son Yorumlar

Comment RSS

Calendar

<<  Ocak 2009  >>
PaSaÇaPeCuCuPa
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

Yazıları geniş takvimde göster

Ne Dinliyorum?

Kirpi - TearDrop (10 saat önce)
Kirpi - My Name Is Kirpi (10 saat önce)
Kirpi - The Song (10 saat önce)
Kirpi - Spell (10 saat önce)
Huseyin Karadayi - Bonus Track Funk Clarinet (String Mix) (10 saat önce)
Huseyin Karadayi - Sacred Gate (10 saat önce)
Huseyin Karadayi - Exotica (10 saat önce)
Huseyin Karadayi - Take Me Away / No Time To Waste (Vocal By Melis Sökmen) (11 saat önce)
Huseyin Karadayi - Eyes Don't Lie (Duet By Enoi & Funky C) (11 saat önce)
Huseyin Karadayi - This Way (Usy Groove) (11 saat önce)

Ne Okuyorum?


Haftanın Sözü


"Sukûnetim asaletimdendir;
Lâkin her lâfa verilecek bir cevabım var.
Bir bakarım lâf lâfmı diye,
Birde bakarım söyleyen adammı diye.."

Mevlânâ Celaleddin-i Belhi Rumi
(1207-1273)

Adanmış Hayatlar

"Zaten aşklar hep yalan dolan,
Sonu hep acı hüsran.
Bize her sevdadan geriye kalan
Sadece Galatasaray..
"

Son Dakika

İstanbul'da Hava

ISTANBUL

Ziyaretçi Sayısı

Ziyaretçi Sayısı