タスクトレイへアイコンを表示する
.NET以降、タスクトレイへアイコンを表示するのが非常に楽になっています。
NotifyIconクラスが用意されており、このクラス(コントロール)を使うことにより容易にタスクトレイへアイコンを追加できます。
タスクトレイへアイコンを追加する
タスクトレイへアイコンを追加するには、フォームへコントロールを追加するかソース中でNotifyIconのインスタンスを作成します。
コントロールをフォームへ配置するには、ツールボックスのNotifyIconを使用します。
もうひとつの方法は、NotifyIconをインスタンス化します。
Private WithEvents m_objNotifyIcon As New NotifyIcon
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' タスクトレイへ表示するIconを設定
m_objNotifyIcon.Icon = New Icon("main.ico")
' タスクトレイへIconを表示
m_objNotifyIcon.Visible = True
End Sub
フォームの表示を切り替える
最小化ボタンが押された場合、フォームを非表示にし、タスクトレイのアイコンがダブルクリックされた場合、フォームを表示するようにします。
' 最初化時にタスクトレイへアイコン表示
Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
If Me.WindowState = FormWindowState.Minimized Then
'フォームを非表示にする
Me.Visible = False
m_objNotifyIcon.Icon = m_objIco
'タスクトレイへIconを表示
m_objNotifyIcon.Visible = True
End If
End Sub
' ダブルクリック時にフォームを表示
Private Sub m_objNotifyIcon_MouseDoubleClick(ByVal sender As Object, _
ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles m_objNotifyIcon.MouseDoubleClick
'フォームを表示する
Me.Visible = True
'ウィンドウ状態を元に戻す
Me.WindowState = FormWindowState.Normal
'フォームをアクティブにする
Me.Activate()
'タスクトレイからアイコンを削除する
m_objNotifyIcon.Visible = False
End Sub
NotifyIconをWithEventsで宣言することにより、タスクトレイ上でのダブルクリックイベントを受取るようになります。
タスクトレイのアイコンを右クリックでメニュー表示
タスクトレイのアイコンを右クリックした際、ポップアップメニューがあ表示されるというインターフェイスがあります。
これを実現するには、NotifyIconのContextMenuを使用します。
Private m_objContextMenu As System.Windows.Forms.ContextMenu
Private WithEvents m_objMenuItem01 As System.Windows.Forms.MenuItem
' メニューの生成
m_objContextMenu = New System.Windows.Forms.ContextMenu
m_objMenuItem01 = New System.Windows.Forms.MenuItem
m_objContextMenu.MenuItems.AddRange(New System.Windows.Forms.MenuItem() _
{m_objMenuItem01})
' m_objMenuItem01の設定
m_objMenuItem01.Index = 0
m_objMenuItem01.Text = "Item01"
' メニューの関連付け
m_objNotifyIcon.ContextMenu = m_objContextMenu