C#でWindowsアプリを作るときに、UIが不要でタスクトレイ常駐タイプのアプリを作りたいときがあります。
以前作ったタイムカードなどもそうです。
s51517765.hatenadiary.jp
ここでは、タスクトレイ常駐タイプのアプリの設定の仕方を説明します。
工程(じゃ~~ん 以下略)
プロジェクトを作成します。WindowStateをMinimizedにします。これで最小化起動になります。
ShowInTaskbarをFalseにします。
アイコンを設定します。
NotifyIconも設定します。こちらがタスクトレイに表示されるアイコンで、通常のFormのアイコンとは独立に設定できます。あまり違うように設定するメリットはないような気がしますが。
これで、最小化(UIが非表示)でタスクトレイのみで起動します。
しかしこれでは、このソフトウェアは何も操作できない(ログを収集して書き出すなどならこれでもOKですが)ので、タスクトレイのアイコンを右クリックでUIを起動できるようにします。
ツールボックスからコンテキストメニューを追加します。
ここでは、Form open
、Version info.
というメニューを作ります。
上記の2つの間には、区切り線を入れます。区切り線は-
(半角ハイフン)で入力できます。
デザイナー画面の下のほうにでているcontextMenuStripをクリックし、デザイナーに表示されたコンテキストメニュの項目をダブルクリックするとそのメニューを選んだ時に実行される関数が作成されます。
フォームを通常サイズに表示するようにします。
private void openFormToolStripMenuItem_Click(object sender, EventArgs e) { this.WindowState = FormWindowState.Normal; }
Version infoを表示するようにします。
private void versionInfoToolStripMenuItem_Click(object sender, EventArgs e) { MessageBox.Show("Copyright 2019" + System.Environment.NewLine + "s51517765" + System.Environment.NewLine + "http://s51517765.hatenadiary.jp/"); }
notifiIconのプロパティでContextMenuStripで呼び出すContextMenuを指定します。
これで、タスクトレイからFormを呼び出すことが出来ます。