请问高手,如何将程序最小化后出现在托盘上?谢谢了!

解决方案 »

  1.   

    trayicon,自己去google上找这个控件,很简单了!
      

  2.   

    const
      WM_BARICON = WM_USER + 200;
      private
        procedure WMSysCommand(var Message: TMessage); message WM_SYSCOMMAND;
        procedure WMBarIcon(var Message: TMessage); message WM_BARICON;
    procedure Tfmmain.WMSysCommand(var Message: TMessage);
    var
      lpData: PNotifyIconData;
    begin
      if Message.WParam = SC_ICON then
      begin
        lpData := new(PNotifyIconDataA);
        lpData.cbSize := 88;
        lpData.Wnd := self.Handle;
        lpData.hIcon := self.Icon.Handle;
        lpData.uCallbackMessage := WM_BARICON;
        lpData.uID := 0;
        lpData.szTip := 'name';
        lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
        Shell_NotifyIcon(NIM_ADD, lpData);
        dispose(lpData);
        self.Visible := False;
      end
      else
      begin
        DefWindowProc(self.Handle, Message.Msg, Message.WParam, Message.LParam);
      end;
    end;
    procedure Tfmmain.WMBarIcon(var Message: TMessage);
    var
      lpData: PNotifyIconData;
    begin
      if (Message.LParam = WM_LBUTTONDBLCLK) then
      begin
        lpData := new(PNotifyIconDataA);
        lpData.cbSize := 88;
        lpData.Wnd := self.Handle;
        lpData.hIcon := self.Icon.Handle;
        lpData.uCallbackMessage := WM_BARICON;
        lpData.uID := 0;
        lpData.szTip := 'name';
        lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
        Shell_NotifyIcon(NIM_DELETE, lpData);
        dispose(lpData);
        self.Visible := True;
      end;
    end;看看这样可以不!