要能在运行时改变也可以不在启动时最小化到系统托盘。

解决方案 »

  1.   

    TrayIcon1.HideMainForm;
        TrayIcon1.IconVisible := True;
      

  2.   

    我在设计时将Form1的Visible设为False,CoolTrayIcon的StartMinimized设为Ture就好使,但我需要在运行时改变啊,怎么办?
      

  3.   

    没用过CoolTrayIcon,但用api实现了。
    interface
    uses
      ShellAPI,ShlObj;
    const
      WM_BARICON = WM_USER + 200;
      cm_Exit = 100; 
      cm_About = 101;
    private
        procedure WMSysCommand(var Message:TMessage);
        message WM_SYSCOMMAND;
        procedure WMBarIcon(var Message:TMessage);
        message WM_BARICON;
    type
      _NOTIFYICONDATAW = record 
        cbSize: DWORD; 
        Wnd: HWND; 
        uID: UINT; 
        uFlags: UINT; 
        uCallbackMessage: UINT; 
        hIcon: HICON; 
        szTip: array [0..63] of WideChar;
      end;
    var
      TNotifyIconData: _NOTIFYICONDATAW;
    procedure TfrmMain.WMSysCommand(var Message: TMessage);// message WM_SYSCOMMAND;
    var 
       lpData:PNotifyIconData;
    begin 
      if Message.WParam = SC_ICON then
      begin 
         //如果用户最小化窗口则将窗口隐藏并在任务栏上添加图标
         lpData := new(PNotifyIconDataA);
         lpData.cbSize := 88; 
        //SizeOf(PNotifyIconDataA);
         lpData.Wnd := frmMain.Handle;
         lpData.hIcon := frmMain.Icon.Handle;
         lpData.uCallbackMessage := WM_BARICON;
         lpData.uID :=0;
         lpData.szTip := 'GPS信息';
         lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
         Shell_NotifyIcon(NIM_ADD,lpData);
         dispose(lpData);
         frmMain.Visible := False;
      end 
      else 
      begin 
         //如果是其它的SystemCommand 消息则调用系统缺省处理函数处理之。 
         DefWindowProc(frmMain.Handle,Message.Msg,Message.WParam,Message.LParam); 
      end; 
    end;
    procedure TfrmMain.WMBarIcon(var Message:TMessage);//message WM_BARICON;
    var
       lpData:PNotifyIconData;
    begin
      if (Message.LParam = WM_LBUTTONDOWN) then
       begin 
         //如果用户点击任务栏图标则将图标删除并回复窗口。 
         lpData := new(PNotifyIconDataA);
         lpData.cbSize := 88;//SizeOf(PNotifyIconDataA);
         lpData.Wnd := frmMain.Handle;
         lpData.hIcon := frmMain.Icon.Handle;
         lpData.uCallbackMessage := WM_BARICON;
         lpData.uID :=0;
         lpData.szTip := 'GPS信息';
         lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
         Shell_NotifyIcon(NIM_DELETE,lpData);
         dispose(lpData); 
         frmMain.Visible := True;
       end;
    end;
      

  4.   

    需要最小化是在程序中写
    sendmessage(frmMain.Handle,WM_SYSCOMMAND,SC_MINIMIZE,0);
    即可。
      

  5.   

    DEMO裡面不就有了嗎?還舍近求遠啊?
      

  6.   

    CoolTrayIcon的Demos里面不是有个StartHidden?
      

  7.   

    TrayIcon1.minimizetotray:=true;
    TrayIcon1.IconVisible := True;
    TrayIcon1.enable := true;