uses
SHELLAPI;
------------------------------------------------------------------
private
//uCallbackMessageで定義したメッセージのイベントハンドラ
procedure TrayIconmsg(var msg :TMessage); message WM_USER+100;
------------------------------------------------------------------
var
NID :TNOTIFYICONDATA;
//起動時にアイコンを追加
procedure TForm1.FormCreate(Sender: TObject);
begin
NID.cbSize :=SizeOf(TNOTIFYICONDATA);//レコードのサイズ
NID.Wnd :=handle;
NID.uID :=1; //アプリケーション定義の数値
NID.uFlags :=NIF_MESSAGE or NIF_ICON or NIF_TIP;
NID.uCallbackMessage :=WM_USER + 100;//トレイアイコンに送られてくるメッセージ
NID.hIcon :=Application.Icon.Handle;//任意のアイコンハンドルを指定
NID.szTip :='Tray Icon sample';//トレイアイコンのヒントの文字列
//アイコンを追加
Shell_NotifyIcon(NIM_ADD, @NID);
end;
//トレイアイコンに送られてくるメッセージの処理
procedure Tform1.TrayIconmsg(var msg :TMessage);
begin
case msg.LParam of
WM_RBUTTONUP:begin
SetforegroundWindow(Handle);//ウィンドウを最前面に
Popupmenu1.Popup(Mouse.CursorPos.X,Mouse.CursorPos.Y);
end;
end; //case msg..
end;
procedure Tform1.Button1Click(sender :TObject);
var
HICO :HICON;
WO :Word;
begin
if Opendialog1.Execute then begin
WO :=0;
HICO :=ExtractassociatedIcon(hinstance,PChar(opendialog1.FileName),WO);
NID.hicon :=HICO;
NID.szTip :='アイコンを変更しました';
Shell_NotifyIcon(NIM_MODIFY,@NID);
end;
end;
procedure Tform1.FormDestroy(sender :TObject);
begin
Shell_NotifyIcon(NIM_DELETE, @NID);
end; |