unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  ShellAPI, StdCtrls,Dialogs;  const MY_MESSAGE = WM_USER + 100;type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormPaint(Sender: TObject);
  private
    { Private declarations }
    procedure OnIconNotify(var Message: TMessage); 
    message MY_MESSAGE;
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.DFM}
procedure TForm1.OnIconNotify(var Message: TMessage); 
const 
Busy: Boolean = false;
begin 
     if not Busy then
     begin
          Busy := true;
          if Message.LParam=WM_LBUTTONDOWN then
          if Application.MessageBox('Are you sure',
             'Exit', MB_YESNO)=IDYES then Close;
          Busy := false;
     end;
end; procedure TForm1.FormCreate(Sender: TObject);
var
   nid: TNotifyIconData;
begin
     nid.cbSize := sizeof(nid); // nid变量的字节数
     nid.Wnd := Handle; // 主窗口句柄
     nid.uID := 1; // 内部标识,可设为任意数
     nid.hIcon := Application.Icon.Handle; // 要加入的图标句柄,可任意指?
     nid.szTip := 'This is a test application'; // 提示字符串
     nid.uCallbackMessage := MY_MESSAGE; // 回调函数消息
     nid.uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE; // 指明哪些字段有?
     if not Shell_NotifyIcon(NIM_ADD, @nid) then
     begin
          ShowMessage('Failed!');
          Application.Terminate;
     end;
{将程序的窗口样式设为TOOL窗口,可避免在任务条上出现} 
     SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var 
nid: TNotifyIconData;
begin
    nid.cbSize := sizeof(nid); // nid变量的字节数
    nid.uID := 1; //内部标识,与加入小图标时的数一致
    nid.Wnd := Handle; //主窗口句柄
    Shell_NotifyIcon(NIM_DELETE, @nid); //去掉小图标
end;procedure TForm1.FormPaint(Sender: TObject);
begin
     Hide;
end;end.