タスクトレイアイコンがダブルクリックされたかどうかを知るにはNotifyIconクラスのDouobleClickイベントを使用します。
このイベントが発生したときにFormのVisibleプロパティをTrueにしWindowStateを変更すれば、タスクトレイのアイコンダブルクリック時フォームが表示されたようになります。
VBの例
' フォームリサイズ時の処理 Private Sub Form5_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize 'フォームが最小化されたか? If Me.WindowState = FormWindowState.Minimized Then 'フォームを非表示にする Me.Visible = False 'タスクトレイに表示するアイコンを設定する Dim ico As New System.Drawing.Icon("cloudservice.ico") NotifyIcon1.Icon = ico 'タスクトレイにアイコンを表示する NotifyIcon1.Visible = True Else 'タスクトレイのアイコンを非表示にする NotifyIcon1.Visible = True End If End Sub ' タスクトレイアイコンがダブルクリックされたときの処理 Private Sub NotifyIcon1_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NotifyIcon1.DoubleClick 'フォームを表示する Me.Visible = True If Me.WindowState = FormWindowState.Minimized Then 'ノーマルウィンドウに戻す Me.WindowState = FormWindowState.Normal 'アクティブにする Me.Activate() 'タスクトレイからアイコンを削除する NotifyIcon1.Visible = False End If End Sub
C#の例
// フォームリサイズ時の処理 private void Form5_Resize(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Minimized) { //フォームを非表示にする this.Visible = false; //タスクトレイに表示するアイコンを設定する System.Drawing.Icon ico = new System.Drawing.Icon("cloudservice.ico"); notifyIcon1.Icon = ico; //タスクトレイにアイコンを表示する notifyIcon1.Visible = true; } else { // タスクトレイのアイコンを非表示にする notifyIcon1.Visible = true; } } // タスクトレイアイコンがダブルクリックされたときの処理 private void notifyIcon1_DoubleClick(object sender, EventArgs e) { //フォームを表示する this.Visible = true; if (this.WindowState == FormWindowState.Minimized) { //ノーマルウィンドウに戻す this.WindowState = FormWindowState.Normal; //アクティブにする this.Activate(); //タスクトレイからアイコンを削除する notifyIcon1.Visible = false; } }
Please follow and like us:
コメント
こちらの記事を参考にタスクトレイ常駐アプリを作成しました。
その後”Mutexを使用しアプリの多重起動を禁止する”という機能を実装しました。
(タスクトレイに常駐済みの同じアプリは多重起動できない機能)
次に実装したいのが”多重起動を試みる操作があった場合、既に起動しているフォームをアクティブ化する”という動作を実現したいです。
通常のフォームアプリであればアクティブ化する方法の解説記事が出ているのですが、タスクトレイ常駐アプリをアクティブ化する方法が見当たらず困っています。
コメント返信、もしくは記事等で解説して頂けるとありがたいです。