C Sharp バックグラウンドで動く
ナビゲーションに移動
検索に移動
目次
C# バックグラウンドで動く
[[C#][Visual Studio][C# タスクトレイ]]
起動後、画面を指定時間経過後に非表示にしてタスクトレイに常駐させる
画面のデザイン
- NotifyIcon と ContextMenuStrip を使って、[C# タスクトレイ] [タスクトレイ]アプリケーションを作成する。
コーディング
Progma.cs
- Application.Run に Form ではなく、ApplicationContext のインスタンスを渡すように修正
using System; using System.Windows.Forms; namespace MyApp { static class Program { /// <summary> /// アプリケーションのメイン エントリ ポイントです。 /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); // Form ではなく、ApplicationContext のインスタンスを渡すように修正 Application.Run(new MyAppContext()); } } }
ApplicationContext を派生させてクラスを作成
- System.Windows.Forms.ApplicationContext
using System; using System.Windows.Forms; namespace MyApp { class MyAppContext : ApplicationContext { public MyAppContext() { LauncherForm launcherForm = new LauncherForm(); // 起動する画面のCloseイベントをこのクラスのOnLauncherFormClosedでハンドリングする launcherForm.FormClosed += new FormClosedEventHandler(this.OnLauncherFormClosed); launcherForm.Show(); // 画面表示させて1秒待機 System.Threading.Thread.Sleep(1000); // 画面を非表示に launcherForm.Hide(); } private void OnLauncherFormClosed(object sender, EventArgs e) { // アプリケーションの終了 ExitThread(); } } }
Form を作成
using System; using System.Windows.Forms; namespace MyApp { public partial class LauncherForm : Form { public LauncherForm() { InitializeComponent(); } private void toolStripMenuItemExit_Click(object sender, EventArgs e) { // コンテキストメニューの終了メニューで、フォームを閉じる this.Close(); } } }
© 2006 矢木浩人