システムトレイにアイコンを表示する

システムトレイにアイコンを表示するにはどうするか?IronPython-2.6-Samplesの中にあるチュートリアルWinFormsMapPointに方法が示されている。

簡略化したサンプルコードを以下に示す。

import clr
clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")

from System.Windows.Forms import *
from System.Drawing import *
import System
from System import *

class FormV4(Form):
 def __init__(self):
  self.Text = 'Test Window'
  self._components = System.ComponentModel.Container()
  
  self._contextMenuStrip1 = ContextMenuStrip(self._components)
  self._exitToolStripMenuItem = ToolStripMenuItem(Text='Exit')
  self._contextMenuStrip1.Items.Add(self._exitToolStripMenuItem)
  self._exitToolStripMenuItem.Click += self.OnExitClick
  
  self._notifyIcon1 = NotifyIcon(self._components, Visible=True, Text='Test icon')
  self._notifyIcon1.Icon = Icon("\WinForms\App.ico")
  self._notifyIcon1.ContextMenuStrip = self._contextMenuStrip1
  self.Closed += self.OnNotifyIconExit
  
 def OnExitClick(self, *args):
  self.Close()
  
 def OnNotifyIconExit(self, *args):
  self._notifyIcon1.Dispose()
  
Application.Run(FormV4())

実行すると何もコントロールを持たないウィンドウが立ち上がる。でも今回はウィンドウが主役ではない。

システムトレイに「Test icon」のアイコンが現れているのが分かる。

そのアイコンを右クリックして「Exit」メニューを選択すると、ウィンドウを閉じることができる。