TTrayIconでタスクトレイアイコン表示 ~Delphiソースコード集
プロジェクトを作成する
Delphiを起動し、メニューから「ファイル」⇒「新規作成」⇒ 「Windows VCLアプリケーション -Delphi(W)」をクリックする。画面設計
TTrayIconをフォームにドラッグ&ドロップします。TrayIcon1のVisibleプロパティをTrueに設定します。
実行する
メニューから「実行」⇒「実行」をクリックすると、コンパイルと実行が行われます。タスクトレイアイコンがタスクバーに表示されます。
実行時にウィンドウを非表示にするには
常駐アプリケーションは起動時にウィンドウを非表示にするものなので非表示にします。DelphiのIDEの[プロジェクト]⇒[ソースの表示]をクリックします。
program Project1; uses Vcl.Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} begin Application.Initialize; Application.MainFormOnTaskbar := False; Application.ShowMainForm := False; Application.CreateForm(TForm1, Form1); Application.Run; end.
タスクトレイのアイコンを設定するには
以下いずれかの方法で変わります。- TTrayIcon.Icon プロパティにアイコン画像を設定する
- TTrayIcon.Icons プロパティにTImageListを設定する
- [プロジェクト]⇒[オプション]から、「アプリケーション」のアイコンを設定する
注意点
TTrayIconクラスはWindows API関数「Shell_NotifyIcon」を使用してタスクトレイアイコンを登録していますが、 タスクトレイがビジーの時(例えばWindows OS起動直後)は失敗することが多いです。Microsoftによると、
API関数「Shell_NotifyIcon(NIM_ADD,変数)」が失敗した場合は、API関数「GetLastError」を呼び出して[ERROR_TIMEOUT]だった場合は、 API関数「Shell_NotifyIcon(NIM_MODIFY,変数)」を呼び出して成功した場合は、何もせずしばらく経過すればタスクトレイアイコン登録が完了し、 そうでない場合は再度、API関数「Shell_NotifyIcon(NIM_ADD,変数)」を呼び出すのが正しいそうです。