const
    WM_TrayMessage=WM_User+100;  protected
      procedure AppMinimized(Sender: TObject);
      procedure WMTrayMessage(var msg:TMessage);message WM_TrayMessage;uses ShellApivar
  NID:TNotifyIconData{点击了任务栏的图标}
procedure TMainForm.WMTrayMessage(var msg:TMessage);
var
  p:TPoint;
begin
  if msg.LParam=WM_LBUTTONDBLCLK then
  begin
    ShowWindow(Application.Handle,SW_Show);
    Application.Restore;
  end
  else if msg.LParam=WM_RButtonDown then
  begin
    GetCursorPos(p);
    pmTray.Popup(p.x,p.y);
  end;
end;{应用程序最小化时图标显示在任务栏}
procedure TMainForm.AppMinimized(Sender:TObject);
begin
  NID.cbSize:=SizeOf(TNotifyIconData);
  NID.hIcon:=Application.Icon.Handle;
  NID.szTip:= '彩虹2.0 Beta ';
  NID.uCallbackMessage:=WM_TrayMessage;
  NID.uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP;
  NID.uID:=0;
  NID.Wnd:=Handle;
  Shell_NotifyIcon(NIM_ADD,@NID);
  ShowWindow(Application.Handle,SW_Hide);
end;procedure TMainForm.FormCreate(Sender: TObject);
begin
  Application.OnMinimize:=AppMinimized;
  AppMinimized(nil);
end;procedure TMainForm.FormDestroy(Sender: TObject);
begin
  Shell_NotifyIcon(NIM_DELETE,@NID);
end;