トップへ(mam-mam.net/)

TTrayIconでタスクトレイアイコン表示 ~Delphiソースコード集

検索:

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.

タスクトレイのアイコンを設定するには

以下いずれかの方法で変わります。
  1. TTrayIcon.Icon プロパティにアイコン画像を設定する
  2. TTrayIcon.Icons プロパティにTImageListを設定する
  3. [プロジェクト]⇒[オプション]から、「アプリケーション」のアイコンを設定する

注意点

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,変数)」を呼び出すのが正しいそうです。