Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8901

C# - Windows常駐アプリ(タスクトレイ) - Form表示なし

$
0
0

タスクトレイにアプリを置く方法

参考サイト#1をベースに作成(ほぼそのまま)。

アイコンを準備する必要があるので、それ用のソフトを持っていない・フリーソフトを入れたくない場合は、手前味噌ですが下記あたりで適当に対応ください。
- https://qiita.com/kob58im/items/850da88ebed27c05022a
- https://qiita.com/kob58im/items/6f319988e3cdb745cf88
- https://qiita.com/kob58im/items/1d3420b51ff6cb5c3871

サンプルコード

usingSystem;usingSystem.Drawing;usingSystem.Windows.Forms;classTaskTrayTest:Form{TaskTrayTest(){this.ShowInTaskbar=false;NotifyIconicon=newNotifyIcon();icon.Icon=newIcon("Output.ico");// Note: この行を省略するとタスクトレイにアイコンが表示されない。icon.Visible=true;icon.Text="常駐テスト";varmenu=newContextMenuStrip();varmenuItem=newToolStripMenuItem();menuItem.Text="E&xit";menuItem.Click+=(sender,e)=>{Application.Exit();};menu.Items.Add(menuItem);icon.ContextMenuStrip=menu;}[STAThread]staticvoidMain(string[]args){Console.WriteLine("Entring Main().");newTaskTrayTest();Console.WriteLine("Instance is created.");Application.Run();Console.WriteLine("Exit Main().");}}

正直、原理がよくわからない

■分かっていること
- NotifyIconが、タスクトレイにアイコンを表示させるためのクラス。(Microsoft Docs参照1)
- Application.Run()が、メッセージループを回している。(Microsoft Docs参照)

■気を付けるべきこと
- タスクトレイからFormを表示させたりする場合は、アプリの終了のさせ方に気を付ける必要がありそう。参考サイト3参照。

■よくわからないこと(未確認)
- NotifyIconのやっていること。(ILSpyでみてみようとしたが難しそう)
- Application.Runで回しているメッセージループのメッセージは誰が受け取っているのか?誰も受け取っていない?
- タスクトレイに置くだけなら、Form要らんかも。

参考サイト

  1. C#: タスクトレイに常駐するアプリの作り方
  2. フォームを表示させずにトレイアイコンを表示する - dobon.net
  3. アプリケーション(自分自身)を終了させる - dobon.net
  4. 通知領域のアイコン情報のレジストリについて

スタートアップへの登録

参考サイト

まだ試せていない
[C#] スタートアップメニューにショートカットを登録する方法


  1. 日本語版は機械翻訳が酷かったので英語のほうにしてます。 


Viewing all articles
Browse latest Browse all 8901

Trending Articles