C# ile Taskbarda Çalýþan Program Hazýrlamak

Bu makalemde size NotifyIcon ve ContextMenu kullanarak bir taskbara yerleþen program nasýl yapýlýr, onu göstereceðim. Daha fazla uzatmadan hemen kodlarýmýzý yazmaya baþlayalým.

Ýlk olarak Visual Studio'yu açalým ve yeni bir proje yaratalým. Bu projenin adýna istediðiniz gibi bir isim verebilirsiniz. Projemiz "C# Windows Application" olmalýdýr.

Projemizi yarattýktan sonra Add / New Item diyerek yeni bir Icon ekleyelim. Iconumuzun Build Action'ý mutlaka "Embedded Resource" olmalý. Daha sonra Form1'ýn kod kýsmýna gecelim. 

Sýnýfýmýzýn içine

private NotifyIcon notifyicon;
private ContextMenu menu;

kodlarýný ekleyelim. Formumuza iki kere týklayalým ve aþaðýdaki metotlarý kaynak kodumuza ekleyelim.

private void Form1_Load(object sender, System.EventArgs e)
{
    notifyicon =
new NotifyIcon(); //Yeni bir NotifyIcon tanýmladýk

    notifyicon.Text = "NotifyIcon Ornegimiz"; //Mouse ile uzerine geldiðimizde olusacak yazý

    notifyicon.Visible = true; //Gorunur ozelligi

    notifyicon.Icon = new Icon("Icon1.ico"); //Iconumuzu belirledik

    menu = new ContextMenu(); //Yeni bir ContextMenu tanýmladýk

    menu.MenuItems.Add(0, new MenuItem("Goster", new System.EventHandler(Goster_Click))); //Menuye eklemeler yapýyoruz.

    menu.MenuItems.Add(1, new MenuItem("Gizle", new System.EventHandler(Gizle_Click)));

    menu.MenuItems.Add(2, new MenuItem("Kapat", new System.EventHandler(Kapat_Click)));

    notifyicon.ContextMenu = menu; //Menumuzu notifyiconun menusu olarak tanýmladýk
}

protected void Goster_Click(object sender, System.EventArgs e)
{
   Show();
//Formumuzu normal ebatlara getirecek
}

protected void Gizle_Click(object sender, System.EventArgs e)
{
   Hide();
// Formumuzu minimize edecek
}

protected void Kapat_Click(object sender, System.EventArgs e)
{
   Close();
//Formumuzu kapatacak
}

Evet, þimdi programýmýzý çalýstýrmaya hazýrýz. E o zaman çalýstýralým ve sonucu görelim. Gorduðunuz gibi programýmýz çalýþtý. Programý kapatalým. O da ne! Iconumuz hala taskbarda duruyor. Peki bunu nasýl düzelteceðiz? Hemen cevap verelim. Kaynak kodumuzun biraz üstlerine bakýyoruz ve þu satýrlarý goruyoruz:

protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components ! null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

Bu satýrlarý aþaðýdaki gibi deðiþtirdiðimizde progrm kapatýldýðýnda taskbar daki icon da silinecektir.

protected override void Dispose( bool disposing )
{
if( disposing )
{
this.notifyicon.Dispose();;
components.Dispose();
}
base.Dispose( disposing );
}

Ve bir sorunumuz daha var. Programýmýzý açtýðýmýz anda Form1 de gözuküyor. Peki Form1 gözükmeden sadece Iconumuzun gözükmesini nasýl saðlayacaðýz? Bunun da çozümü var. Biraz daha yukarýlara bakýp

InitializeComponent();

satýrýndan bir sonraki satýra su kodlarý koyuyoruz:

this.WindowState = FormWindowState.Minimized;
this.ShowInTaskbar = false;

Bunlarý yaptýktan sonra yapmamýz gerek bir deðiþiklik daha var. O da Goster_Click ve Gizle_Click'i su sekilde deðiþtirmek:

protected void Goster_Click(object sender, System.EventArgs e)
{
this.WindowState = FormWindowState.Normal; //Formumuzu normal ebatlara getircek
}

protected void Gizle_Click(object sender, System.EventArgs e)
{
this.WindowState = FormWindowState.Minimized; // Formumuzu minimize edecek
}

Ve þimdi hersey tamam. Programýmýz artýk calýsmaya hazýr durumda. Hemen calýþtýrýp sonucu görebiliriz.

Umarým herkes için faydalý bir yazý olmustur. Benim için kod yazmak yazý yazmaktan daha kolay, bunu herkesin tatmasýný isterim :)) Yeni yazýlarda gorusmek dileðiyle hoþçakalýn.