Jump to content

How Do I ? - 3


wmismail

Recommended Posts

"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/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:

1000000768_image001.jpg

Ş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:

1000000768_image002.jpg

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 :)

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...