NotifyIconコントロール

Similar documents
VB.NET解説

グラフィックス

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの

ListViewコントロール

ファイル監視

Userコントロール

ICONファイルフォーマット

ルーレットプログラム

データアダプタ概要

プラグイン

ファイル操作

ブロック パニック

プロセス間通信

Prog2_15th

データベースプログラミング

Visual Basic 資料 電脳梁山泊烏賊塾 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値

スレッド操作 タイマー

VFD256 サンプルプログラム

平成 30 年度 プログラミング研修講座 岩手県立総合教育センター

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

Microsoft Word - VB.doc

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

ブロック崩し風テニス

ファイル操作-インターネットキャッシュ

データベースⅠ

アプリケーション

Microsoft Word -

グラフィックス 目次

ウィンドウ操作 応用

Ver.1.1

ハッシュテーブル

目次 はじめに... 3 システムの必要条件... 4 ライセンス認証... 4 アクティベーション... 6 開発... 7 手順 1. アプリケーションの作成... 7 手順 2. データソースの作成と代入... 7 手順 3. テンプレートの作成 手順 4. レポートビューアの追加

正規表現応用

Prog2_4th

グラフィックス 目次

印刷

DAOの利用

ファイル操作-バイナリファイル

Prog2_12th

テスト 1/7 ページ プレポスト Visual Studio による Windows アプリの開発 ( 基礎編 ) 受講日程受講番号氏名 1.NET Framework に関する記述で 誤っているものを選びなさい 1..NET Framework に含まれる CLR は プログラミング言語に依存し

VB.NET解説

インベーダープログラム

VB実用⑦ エクセル操作Ⅰ

目次 はじめに... 3 システムの必要条件... 3 サンプルアプリケーションの作成... 3 手順 手順 手順 手順 手順 手順 終わりに... 23

構造体

エクセル詳細 アドイン

かべうちテニス

画像閲覧プログラム

グラフィックトレーニング 概要.NET のグラフィック描画は どんなことができるのでしょうか? グラフィックオブジェクトやグラフィック環境 概念を理解するためには クラスを使って馴れることが近道です 本 書に記載されているコードをカットアンドペーストして 一つ一つの機能を体験してください 前提 グラ

VB実用Ⅲ⑩ フリーデータベースⅡ

構造体

WebBrowserコントロール

パラパラ漫画

Prog2_2nd

MS Office オートメーション

ドライブは安全運転で in 滋賀♪

3D回転体プログラム

チャットプログラム

回文作成支援プログラム

Secure iNetSuite for .NET 4.0Jの新仕様について

Msako技術資料 

Microsoft Excel操作

メール送信

画像閲覧プログラム

CashDrawer ライブラリ API 仕様書 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev / 10

キー操作

データベースプログラミング

64bit環境で32bitコンポーネントの利用

C#の基本

第1章 ビジュアルプログラミング入門

(Microsoft Word \203v\203\215\203O\203\211\203~\203\223\203O)

VB実用① データベースⅠ

Java - Visual Editor

With sqlda sqlda に SelectCommand を追加.SelectCommand = New MySqlCommand() With.SelectCommand.CommandType = CommandType.Text.CommandText = "select * from

印刷

データベース1

GUIプログラムⅣ

モグラ叩きプログラム

回文作成支援プログラム

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 関数とメソッド 関数とメソッド Python には関数 (function) とメソッド (method) が有る モジュール内に def で定義されて居る物が関数 クラス内に def で定義されて居る物がメソッドに成る ( 正確にはクラスが

チャットアプリ

Visual Studio2008 C# で JAN13 バーコードイメージを作成 xbase 言語をご利用の現場でバーコードの出力が必要なことが多々あります xbase 言語製品によっては 標準でバーコード描画機能が付加されているものもあるようで す C# では バーコードフォントを利用したりバー

データベースⅠ

占領双六ゲーム

SharpShooter Reports.WPF 基本的な使い方 Last modified on: November 15, 2012 本ドキュメント内のスクリーンショットは英語表記ですが SharpShooter Reports JP( 日本語版 ) では日本語で表示されます

API 連携方式 外部 DLL の呼び出し宣言 外部 DLL の呼び出し宣言のサンプルコード (Microsoft Visual C#.NET の場合 ) プログラムコードの先頭で using System.Runtime.InteropServices; が必要 クラスの内部に以下のような外部 D

第 1 章 : はじめに RogueWave Visualization for C++ の Views5.7 に付属している Views Studio を使い 簡単な GUI アプリケーションの開発手順を紹介します この文書では Windows 8 x64 上で Visual Studio2010

mySQLの利用

WebReportCafe

GS1-128 の描画 DLL について (ver. 2.3) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される

ドッグファイト

スロットプログラム

図 2 Excel スプレッドシートの世界 のウィンドウ 図 3 Visual Basic の世界 のウィンドウ 図 3 の VBA ウィンドウは 図 2 の Excel ウィンドウのメニューの ツール をクリックし 開か れるプルダウンメニューで マクロ /Visual Basic Editor

CodeGear Developer Camp

D:\Documents\Visual Studio 2015\Projects\MyHomePage 用サンプル \ExcelAndWord\ExcelAndWord\MainForm.cs 1 /* */ Excel や Word とやりとりする ~9,20 仕様 Excel

回文作成支援プログラム

回文作成支援プログラム

データベース1

相性占いプログラム

Case 0 sqlcmdi.parameters("?tencode").value = Iidata(0) sqlcmdi.parameters("?tenname").value = Iidata(1) 内容を追加します sqlcmdi.executenonquery() Case Else

Transcription:

NotifyIcon コントロール システムトレイ ( タスクトレイ ) にアイコンを表示する.NET Framework 2.0 以降の場合は 後述の 2 を観て欲しい Outlook や MSN Messenger 等の様に Windows アプリケーションではシステムトレイ ( タスクトレイ ステータス領域等とも呼ばれる ) にアイコンを表示して アプリケーションの状態を示したり アプリケーションのフォームを表示したりする為のショートカットとして利用する事が出来る.NET Framework のクラスライブラリには システムトレイにアイコンを表示する為の NotifyIcon コンポーネントが用意されて居り 此れを使用する事に依り 上記の様なアプリケーションを簡単に作成出来る 本稿では 以下の様な仕様のアプリケーションを作成し乍 NotifyIcon コンポーネントの基本的な利用方法に付いて纏める 起動時にフォームと同時にシステムトレイにアイコンを表示する アイコンを右クリックして表示されるコンテキスト メニューの [ 終了 ] で アプリケーションを終了出来る フォームの右上隅に有る [ 閉じる ] ボタンのクリックで フォームを非表示にする ( アプリケーションは終了しない ) アイコンのダブルクリックでフォームを表示し 且つアクティブにする システムトレイへのアイコンの表示 先ずアプリケーションの起動時に システムトレイにアイコンが表示される様にする Visual Studio.NET で Windows アプリケーションのプロジェクトを新規作成し [ ツールボックス ] ウィンドウから NotifyIcon コンポーネントをフォーム上にドラッグ & ドロップする 次に [ プロパティウィンドウ ] にて Icon プロパティで適当なアイコンファイル (.ico ファイル ) を選択する 此処で指定したアイコンが システムトレイに表示されるアイコンと成る 此の設定を行わなければ アプリケーションを実行してもシステムトレイにアイコンは表示されない 亦 NotifyIcon コンポーネントの Text プロパティに文字列を設定して置けば 其れがアイコンのツールヒントテキストとして使用される 此れはマウスカーソルをアイコン上に移動させた時に表示される システムトレイアイコンに於けるコンテキストメニューの表示 続いては アイコンの右クリックに依り [ 終了 ] メニューを表示し 其れを実行してアプリケーションを終了出来る様にする 此れには ContextMenu コンポーネントをフォーム上にドラッグ & ドロップし [ 終了 ] メニュー項目を追加する 然して [ プロパティ ] ウィンドウにて NotifyIcon コンポーネントの ContextMenu プロパティに 今作成した ContextMenu コンポーネントを設定する -1-

[ 終了 ] メニューの項目を追加した ContextMenu コンポーネント此処ではフォームのメニューとしてデザインするが メニュー ( 此の画面では contextmenu1) を NotifyIcon コンポーネントの ContextMenu プロパティに設定する事に依り アイコンを右クリックした時に表示される様に成る アイコンの [ 終了 ] メニューに依るアプリケーションの終了 次に 今追加した [ 終了 ] メニュー項目をダブルクリックして メニュー項目の選択時に実行されるイベントハンドラを以下の様に記述する Private Sub MenuItem1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MenuItem1.Click NotifyIcon1.Visible = False ' アイコンをトレイから取り除く Application.Exit() ' アプリケーションの終了 private void menuitem1_click(object sender, System.EventArgs e) notifyicon1.visible = false; // アイコンをトレイから取り除く Application.Exit(); // アプリケーションの終了 通常 Windows フォームを終了させる時には Close メソッドを呼び出すが 今回の場合では次の項目で述べて居る様に Close メソッド呼び出しに依り発生する Closing イベントをキャンセルして了うので 此処では Application.Exit メソッドに依りアプリケーションを強制的に終了させる 亦 アプリケーションの終了時にはシステムトレイにアイコンが残って了う事が有るので アイコン (NotifyIcon オブジェクト ) の Visible プロパティを false に設定して 明示的にシステムトレイから消して置く -2-

システムトレイアイコンを利用したアプリケーションを作成して居る場合には アプリケーションが終了したにも拘らずアイコンが残って了い 其のアイコンをマウスカーソルでなぞると消えると謂う現象が偶に発生する事が有るが 其の様な場合には此の方法を試して欲しい フォームの [ 閉じる ] ボタンクリックに依るフォームの非表示 システムトレイアイコンを表示する様な 所謂常駐型のアプリケーションでは フォームの右上隅に有る [ 閉じる ] ボタンがクリックされてもアプリケーションを終了させずに フォームを非表示にする丈の場合が多い 此の動作を実装するには フォームを閉じようとした時に発生する Closing イベントのイベントハンドラをフォームに追加し 次の様に記述する Private Sub Form1_Closing(ByVal sender As Object, _ ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing e.cancel = True ' 終了処理のキャンセル Me.Visible = False ' フォームの非表示 private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e) e.cancel = true; // 終了処理のキャンセル this.visible = false; // フォームの非表示 此のイベントハンドラでは パラメータで渡される CancelEventArgs オブジェクトの Cancel プロパティに true を設定する事に依り フォームの終了処理をキャンセル出来る 亦 此処では フォームの Visible プロパティに false を設定する事に依り フォームを非表示にする アイコンのダブルクリックに依るフォームの表示 最後に フォームの [ 閉じる ] ボタンに依り非表示に成ったフォームを システムトレイのアイコンをダブルクリックする事に依り再度表示される様にする 此れには NotifyIcon コンポーネントに DoubleClick イベントハンドラを追加し 次の様に記述する Private Sub NotifyIcon1_DoubleClick(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles NotifyIcon1.DoubleClick Me.Visible = True ' フォームの表示 If Me.WindowState = FormWindowState.Minimized Then Me.WindowState = FormWindowState.Normal ' 最小化を止める End If Me.Activate() ' フォームをアクティブにする private void notifyicon1_doubleclick(object sender, System.EventArgs e) this.visible = true; // フォームの表示 if (this.windowstate == FormWindowState.Minimized) this.windowstate = FormWindowState.Normal; // 最小化を止める this.activate(); // フォームをアクティブにする -3-

此処では フォームが最小化されて居る場合には フォームの WindowState プロパティに FormWindowState.Normal を設定する事に依り フォームの通常の状態に戻して居る 亦 フォームの Activate メソッドを呼び出してフォームをアクティブにして居る 此れに依り フォームが他のウィンドウに隠れていた場合にも 最前面に表示される様に成る -4-

起動時にタスクトレイのアイコンのみを表示する 前項では Windows アプリケーションでタスクトレイアイコンを表示する方法に付いて解説したが 常駐型のアプリケーションでは 起動時からフォームを表示せずにアイコン而巳を表示したい場合が有る 本稿では此の方法に付いて解説する Application.Run メソッドの呼び出し部分の変更 アプリケーションの起動時にフォームが表示されるのは 通常 Main メソッドで実行される Application.Run メソッドに依る物で有る 此の Application.Run メソッドは パラメータで指定されたフォームを表示し メッセージループを開始する 其の為 起動時にフォームを表示させない様にするには Application.Run メソッドの呼び出し部分を以下の様に変更すれば良い ( 此の変更は前項で作成したアプリケーションに対して行う ) 先ず の場合には 自動生成されたコードを次の様に変更する public class Form1 : System.Windows.Forms.Form static void Main() new Form1(); Application.Run(); // Application.Run(new Form1()); // 自動生成される元のコード VB の場合には Application.Run メソッドの呼び出しが明示的には実装されない為 以下の様な Main メソッドを追加し プロジェクトのプロパティで [ スタートアップの設定 ] を変更して 此の Main メソッドをアプリケーション起動時に呼び出される様にする Public Class Form1 Inherits System.Windows.Forms.Form Shared Sub Main() Dim f As New Form1 Application.Run() 以上の修正に依り フォームは生成されるが 表示はされない状態 ( 非表示の状態 ) としてアプリケーションは実行される 猶 前項で既に解説して居るが 此のアプリケーションを終了させる場合には Application.Exit メソッドを呼び出す必要が有る -5-

システムトレイ ( タスクトレイ ) にアイコンを表示する 2 本記事は前記の システムトレイ ( タスクトレイ ) にアイコンを表示する に加筆 修正し.NET Framework 2.0 以降に対応させた物で有る Outlook や Windows Live Messenger 等の様に Windows アプリケーションではシステムトレイ ( タスクトレイ ステータス領域等とも呼ばれる ) にアイコンを表示して アプリケーションの状態を示したり アプリケーションのフォームを表示したりする為のショートカットとして利用する事が出来る.NET Framework のクラスライブラリには システムトレイにアイコンを表示する為の NotifyIcon コンポーネントが用意されて居り 此れを使用する事に依り 上記の様なアプリケーションを簡単に作成出来る 本稿では 以下の様な仕様のアプリケーションを作成し乍 NotifyIcon コンポーネントの基本的な利用方法に付いて纏める 起動時にフォームと同時にシステムトレイにアイコンを表示する アイコンを右クリックして表示されるコンテキストメニューの [ 終了 ] で アプリケーションを終了出来る フォームの右上隅に有る [ 閉じる ] ボタンのクリックで フォームを非表示にする ( アプリケーションは終了しない ) アイコンのダブルクリックでフォームを表示し 且つアクティブにする システムトレイへのアイコンの表示 先ずアプリケーションの起動時に システムトレイにアイコンが表示される様にする Visual Studio(Visual Studio 2005 や 2008) で Windows アプリケーションのプロジェクトを新規作成し [ ツールボックス ] ウィンドウから NotifyIcon コンポーネントをフォーム上にドラッグ & ドロップする 次に [ プロパティ ] ウィンドウにて Icon プロパティに適当なアイコンファイル (.ico ファイル ) を選択する 此処で指定したアイコンがシステムトレイに表示されるアイコンと成る 此の設定を行わなければ アプリケーションを実行してもシステムトレイにアイコンは表示されない 亦 NotifyIcon コンポーネントの Text プロパティに文字列を設定して置けば 其れがアイコンのツールヒントテキストとして使用される 此れはマウスカーソルをシステムトレイのアイコン上に移動させた時に表示される システムトレイアイコンに於けるコンテキストメニューの表示 続いては アイコンの右クリックに依り [ 終了 ] メニューを表示し 其の選択に依りアプリケーションを終了出来る様にする 此れには先ず ContextMenuStrip コンポーネントをフォーム上にドラッグ & ドロップし [ 終了 ] メニュー項目を追加する 然して [ プロパティ ] ウィンドウにて NotifyIcon コンポーネントの ContextMenuStrip プロパティで 今作成した ContextMenuStrip コンポーネントを設定する -6-

[ 終了 ] メニューの項目を追加した ContextMenu コンポーネント画面は Visual Studio 2008 を使用した場合 此処ではフォームのメニューとしてデザインするが メニュー ( 此の画面では contextmenustrip1) を NotifyIcon コンポーネントの ContextMenuStrip プロパティに設定する事に依り アイコンを右クリックした時に表示される様に成る アイコンの [ 終了 ] メニューに依るアプリケーションの終了 次に 今追加した [ 終了 ] メニュー項目をダブルクリックし メニュー項目の選択時に実行されるイベントハンドラ (Click イベントのハンドラ ) する 然して以下の様にコードを記述する Private Sub 終了 ToolStripMenuItem_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles 終了 ToolStripMenuItem.Click NotifyIcon1.Visible = False ' アイコンをトレイから取り除く Application.Exit() ' アプリケーションの終了 private void 終了 ToolStripMenuItem_Click(object sender, EventArgs e) notifyicon1.visible = false; // アイコンをトレイから取り除く Application.Exit(); // アプリケーションの終了 通常 Windows フォームを終了させる時には Close メソッドを呼び出すが 今回の場合では次の項目で述べて居る様に Close メソッド呼び出しに依り発生する FormClosing イベント *1 をキャンセルして了うので 此処では Application.Exit メソッドに依りアプリケーションを強制的に終了させる 1.NET Framework 2.0 以前では FormClosing イベントの代わりに Closing イベントが発生していたが.NET Framework 2.0 以降では Closing イベントは発生しない -7-

亦 アプリケーションの終了時にはシステムトレイにアイコンが残って了う事が有るので アイコン (NotifyIcon オブジェクト ) の Visible プロパティを false に設定して 明示的にシステムトレイから消して置く システムトレイアイコンを利用したアプリケーションを作成して居る場合には アプリケーションが終了したにも拘らずシステムトレイにアイコンが残って了い 其のアイコンをマウスカーソルでなぞると消えると謂う現象が偶に発生する事が有るが 其の様な場合には此の方法を試して欲しい フォームの [ 閉じる ] ボタンクリックに依るフォームの非表示 システムトレイアイコンを表示する様な 所謂常駐型のアプリケーションでは フォームの右上隅に有る [ 閉じる ] ボタンがクリックされてもアプリケーションを終了させずに フォームを非表示にする丈の場合が多い 此の動作を実装するには フォームを閉じようとした時に発生する FormClosing イベントのイベントハンドラをフォームに追加し 次の様に記述する Private Sub Form1_FormClosing(ByVal sender As Object, _ ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing If e.closereason <> CloseReason.ApplicationExitCall Then e.cancel = True ' フォームが閉じるのをキャンセル Me.Visible = False ' フォームの非表示 End If private void Form1_FormClosing(object sender, FormClosingEventArgs e) if (e.closereason!= CloseReason.ApplicationExitCall) e.cancel = true; // フォームが閉じるのをキャンセル this.visible = false; // フォームの非表示 此の FormClosing イベント ハンドラでは Application.Exit メソッド以外でフォームが閉じられようとした場合 其れをキャンセルして居る *2 2.NET Framework 2.0 以前では Application.Exit メソッド呼び出し時には Closing イベントは発生しなかった.NET Framework 2.0 以降では フォームの Close メソッドや Application.Exit メソッド呼び出しで FormClosing イベントが発生する様になって居る 此の様に FormClosing イベント ハンドラでは パラメータで渡される FormClosingEventArgs オブジェクトの CloseReason プロパティに依り 何の様な理由でフォームが閉じられようとして居るのかを知る事が出来る様に成って居る 此のプロパティの値は CloseReason 列挙体で定義された孰れかの値と成る 因みに ユーザーがフォーム右上の [ 閉じる ] ボタンを押した場合には CloseReason プロパティの値は CloseReason.UserClosing に成るが プログラムでフォームの Close メソッドを呼び出した場合にも其の値と成るので注意が必要だ -8-

フォームの終了処理のキャンセルは FormClosingEventArgs オブジェクトの Cancel プロパティに true を設定すれば良い 亦此処では フォームの Visible プロパティに false を設定する事に依り フォームを非表示にして居る アイコンのダブルクリックに依るフォームの表示 最後に フォームの [ 閉じる ] ボタンのクリックに依り非表示に成ったフォームを システムトレイのアイコンのダブルクリックに依り再度表示される様にしよう 此れには NotifyIcon コンポーネントに DoubleClick イベントハンドラを追加し 次の様に記述する Private Sub NotifyIcon1_MouseDoubleClick(ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseDoubleClick Me.Visible = True ' フォームの表示 If Me.WindowState = FormWindowState.Minimized Then Me.WindowState = FormWindowState.Normal ' 最小化を止める End If Me.Activate()' フォームをアクティブにする private void notifyicon1_doubleclick(object sender, EventArgs e) this.visible = true; // フォームの表示 if (this.windowstate == FormWindowState.Minimized) this.windowstate = FormWindowState.Normal; // 最小化を止める this.activate(); // フォームをアクティブにする 此処では フォームが最小化されて居る場合には フォームの WindowState プロパティに FormWindowState.Normal を設定する事に依り フォームを通常の状態に戻して居る 亦 最後の行ではフォームの Activate メソッドを呼び出してフォームをアクティブにして居る 此れに依り フォームが他のウィンドウに隠れていた場合にも 最前面に表示される様に成る -9-