<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Caner Dalgıç - Infinity &#187; system tray icon</title>
	<atom:link href="http://www.canerdalgic.com/blog/tag/system-tray-icon/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.canerdalgic.com/blog</link>
	<description>cnrd // 080111: deneysel paranoya</description>
	<lastBuildDate>Sun, 01 Nov 2009 21:02:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Basit C# .net İpuçları -1</title>
		<link>http://www.canerdalgic.com/blog/2009/09/27/basit-c-net-ipuclari-1/</link>
		<comments>http://www.canerdalgic.com/blog/2009/09/27/basit-c-net-ipuclari-1/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 21:34:09 +0000</pubDate>
		<dc:creator>CanerD</dc:creator>
				<category><![CDATA[Programlama]]></category>
		<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c-sharp]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[menu]]></category>
		<category><![CDATA[notifyicon]]></category>
		<category><![CDATA[örnek]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[system tray icon]]></category>
		<category><![CDATA[task bar]]></category>
		<category><![CDATA[taskbar]]></category>

		<guid isPermaLink="false">http://www.canerdalgic.com/blog/?p=16</guid>
		<description><![CDATA[Basit C# .net İpuçları  - Bölüm 1
Programı System Tray Icon'a küçültmek, dışarıdan harici olarak uygulama çağırmak, örnekleri ile.]]></description>
			<content:encoded><![CDATA[<p>C# .net üzerinde çalışırken &#8220;Windows Aplication&#8221; projelerinde küçük özellikleri kullanmaya çalıştığınızda eski Vb esnekliğini arayabilirsiniz.</p>
<p>Görünen o ki, bunun üstesinden gelmenin tek yolu yine her programla platformunda olduğu gibi tecrübe kazanmak. Ben de boş vakitlerimde kendi ihtiyaçlarımı karşılayacak kişisel projeler geliştirerek bu eksikliklerimi tamamlaya çalışıyorum.</p>
<p><strong>Bir programcı atasözü:</strong> Programlama, bisiklete binmek gibidir; asla unutulmaz, yanlızca pratik gerektirir.</p>
<p>Fazla uzatmadan ipuçlarına gelelim, zaten çok içeriğimiz yok ;</p>
<p><strong>1- Taskbar İşlemleri;</strong></p>
<p>Oluşturduğunuz Windows uygulamasının <a title="Kapat Tuşu" href="http://canerdalgic.com/images/windows_workarea.gif" target="_blank">Kapat tuşu</a>na tıklandığında, Simge haline getirildiğinde ya da sizin önceden belirlediğiniz bir şart gerçekleştiğinde, uygulamanın kendisine ait bir simge ile TaskBar&#8217;da gözükmesini istiyorsunuz. Bu durumda yapmanız gereken uygulamanıza bir NotifyIcon component&#8217;i eklemektir.</p>
<p>Bu component <a title="Görünmezlik" href="http://en.wikipedia.org/wiki/Invisibility#By_magic" target="_blank">görünmez</a> bir component olduğundan Form&#8217;unuzun içinde değil altında gözükecektir.</p>
<p>NotifyIcon&#8217;u eklediğinizde buna ait bazı Property&#8217;leri değiştirmeniz gerekecektir. Örneğin en başta yapmanız gereken <strong>Visible</strong> özelliğini <strong>True</strong> değerine getirmek olmalı. Bunun ardından da <strong>Text</strong>, <strong>Icon</strong> ve <strong>BaloonTip</strong> gibi özellikleri de değiştirmeniz görsellik açısından önemlidir. <strong>Icon</strong> özelliği aynı zamanda tıklanacak alanı belirlediğinden fonksiyonalite açısından da önemlidir. Bu özelliklerin değerlerini belirtildiği gibi yaptığınızda program çalışır çalışmaz TaskBar&#8217;da simge gözükecektir. Eğer programın çalışması esnasında Taskbardaki simgenin görünürlük zamanları değiştirilmek istenirse, kod içinde;</p>
<blockquote><p><em>notifyIcon1.</em>Visible = false;</p>
<p>ya da;</p>
<p><em>notifyIcon1</em>.Visible = true;</p></blockquote>
<p>satırlarıyla bu ayarlanabilir.</p>
<p>Önemli olan bir nokta da bu aracı kullanırken Taskbar&#8217;da çıkacak olan simgenin üzerine sağ tıklandığında çıkacak olan menü ve bunun özellikleridir.  Bunun için yapılması gereken işlem yine <strong>.net</strong> basitliğinde ancak yine componentlere bağlı.</p>
<p>Menü eklemek için yapılması gereken bir <strong>ContextMenuStrip </strong>nesnesi eklemek, Gerekli menüleri tasarlayıp görevlerini kodlamak yazmak ve <strong>NotifyIcon</strong> nesnesinin property kısmında <strong>ContextMenuStrip</strong> özelliğinde bizim eklediğimiz ContextMenuStrip nesnesini seçmek. Bu menu System Tray&#8217;de bulunan simgemizin üzerine sağ tıklandığında görünür hale gelecektir.</p>
<p>Burada dikkat edilmesi gereken menu&#8217;de bulunan seçeneklerin programın genel işleyişi üzerindeki etkisini göz ardı etmemektir. Aşağıda örnek programın tasarım aşamasından ekran görüntüsü veriyorum;</p>
<div id="attachment_18" class="wp-caption alignleft" style="width: 299px"><img class="size-medium wp-image-18 " title="ss_form_underline_1" src="http://www.canerdalgic.com/blog/wp-content/uploads/2009/09/ss_form_underline_1-289x300.gif" alt="Örnek Program Tasarımı" width="289" height="300" /><p class="wp-caption-text">Örnek Program Tasarımı</p></div>
<p>Kodlara sıra geldi.</p>
<p>Bu özellik (system tray icon) çok çeşitli spektrumda programlar için kullanılabilir. Bu sebeple ben basit bir örnek program yazıp yalnızca bu işlevi yapan kodlarını yayımlıyorum.</p>
<p>Ayrıca bu örnek programı <a title="Örneği indir" href="http://www.canerdalgic.com/blog/download/TaskBar_WinAppCDB.zip" target="_self">buraya</a> tıklayarak indirebilir ve kendiniz de inceleyebilirsiniz.</p>
<p>Burada benim örnek olarak hazırladığım basit uygulamaya dair kodları bulacaksınız;</p>
<pre> private void button2_Click(object sender, EventArgs e)
 {
 Close();
 }
 private void button1_Click(object sender, EventArgs e)
 {
 Hide();
 }
 private void menu1ToolStripMenuItem_Click(object sender, EventArgs e)
 {
 Show();
 }
 private void menu2ToolStripMenuItem_Click(object sender, EventArgs e)
 {
 Close();
 }
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
 {
 Show();
 }
 private void Form1_Resize(object sender, EventArgs e)
 {
 Hide();
 }</pre>
<p>Burada da gördüğünüz gibi, C# .net ortamında programı TaskBar&#8217;a küçültmek kodlardan daha çok componentler le yapılan bir işlemdir.</p>
<p><strong>2- Program Çalıştırma (Uygulama Çağırma);</strong></p>
<p>İkinci olarak yine basit ve faydalı bir işlem olan windows application üzerinden uygulama çalıştırma ve bu uygulamalara <strong>command</strong> <strong>task</strong> vermekten bahsedeceğim.</p>
<p>Kısaca kodları vererek bu olayı hızlı bir şekilde çözebileceğimizi düşünüyorum <img src='http://www.canerdalgic.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>C# .net ortamında <em>System.Diagnostics.Process.Start(&#8221;pathway&#8221;); </em>kodu kullanarak her türlü dosyayı windows&#8217;un uzantısıyla eşleştirilen program ile açabilirsiniz.</p>
<p>Örneğin;</p>
<p><strong>System.Diagnostics.Process.Start(&#8221;C:\\Temp\\deneme.txt&#8221;);</strong></p>
<p>kodunu çalıştırdığımızda, uygulamamız <strong>c:\Temp\deneme.txt</strong> dosyasını önceden eşleştirildiği uygulama ile açacaktır.</p>
<p>Ayrıca process.start komutu ile de doğrudan doğruya <a title="C# .exe uzantılı program çalıştırma" href="http://filext.com/file-extension/exe" target="_blank">.exe</a> ya da diğer yürütülebilir uzantılardaki programları external (dışarıdan-harici) olarak çağırabilirsiniz;</p>
<p><strong>Process.Start(&#8221;c:\Temp\deneme.exe&#8221;);</strong></p>
<p>Burada dikkat edilmesi gereken iki nokta var. Bunlardan birincisi bu kodların içindeki &#8220;\&#8221; işareti. Bu işaret işletim sistemine göre farklılıklar gösterebilir. Genelde (Vista ve <a title="Windows Xp Service Pack 2" href="http://en.wikipedia.org/wiki/XPSP2#Service_Pack_2" target="_blank">XP-Sp2</a>) için iki adet arka arkaya ters slaş (&#8221;\\&#8221;) işareti gerekiyor. Ancak yine de dikkatli olunması gerekir. İkinci önemli nokta ise bu execution (yürütme) işlemlerinde işletim sistemi tarafından tanınan izinlerin çok büyük önem arz etmesidir. Özellikle <a title="Windows Vista" href="http://tr.wikipedia.org/wiki/Windows_Vista" target="_blank">Vista</a> gibi izinlerin varsayılan (default) olarak kısıtlı geldiği sistemlerde dikkat edilmelidir.</p>
<p>Son olarak bu iki komut interchangeable yani birbirlerinin yerine kullanılabilir komutlardır.</p>
<p><a title="Örneği indir" href="http://www.canerdalgic.com/blog/download/TaskBar_WinAppCDB.zip" target="_self">Örnek programı indirmek için tıklayınız.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.canerdalgic.com/blog/2009/09/27/basit-c-net-ipuclari-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
