const 
  WM_AMOUSE = WM_USER + 100;...
  MainImage: TImage;
...
  private
    procedure IconMouseEvent(var Message: TMessage); Message WM_AMOUSE;...procedure TMainForm.FormCreate(Sender: TObject);
var
  FIconData: TNotifyIconData;
begin
  FIconData.cbSize := SizeOf(FIconData);
  FIconData.Wnd := handle;
  FIconData.uID := 1;
  FIconData.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
  FIconData.uCallbackMessage := WM_AMOUSE;
  FIconData.hIcon := MainImage.Picture.Bitmap.Handle;
  FIconData.szTip := 'Zhuhai is a nice city!';
  Shell_NotifyIcon(NIM_ADD,@FIconData);
end;procedure TMainForm.IconMouseEvent(var Message: TMessage);
begin
  with Message do
  begin
    if Msg = WM_AMOUSE then
    begin
      if LParam = WM_LBUTTONDBLCLK then
      begin
        if MainForm.WindowState = wsMinimized then
        begin
          ShowWindow(handle,SW_SHOWNORMAL);
          mainform.Show;
          SetForegroundWindow(handle);
        end
        else begin
          ShowWindow(handle,SW_SHOWMINIMIZED);
          MAINFORM.Hide;
        end;
      end;
    end;
  end;
end;end.