如何让程序运行后自己放到系统托盘里要用户点击后才有窗口显示?
有这方面的控件吗?或是用代码怎么实现?
谢谢。[email protected]

解决方案 »

  1.   

    使用组件CoolTray的TCoolTrayIcon
    网上可以下载
      

  2.   

    向系统托盘中加入图标控制菜单:  向系统托盘中加入图标控制菜单须用到函数Shell_NotifyIconA,而这个函数又有两个参数:'TnotifyIconDataA'结构的参数和一个消息参数即:Shell_NotifyIconA(dwMessage:DWORD;lpData:PNotifyIconDataA),第一个参数dwMessage可以是以下值:NIM_ADD:增加一个图标 ;NIM_MODIFY:修改一个已有的图标 ;NIM_DELETE:删除一个已有的图标 ;
      

  3.   

    搜索一下就有大把代码。unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
      Dialogs, shellapi, StdCtrls;
    const
      WM_TRAYNOTIFY = WM_USER+100; //任务区小图标自定义消息type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        procedure TrayNotifyMessage(var Sender: TMessage);
        message WM_TRAYNOTIFY;
        procedure MarkTaskBarIcon(Sender: TObject);
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      tnd: TNOTIFYICONDATA;implementation{$R *.dfm}procedure TForm1.MarkTaskBarIcon(Sender: TObject);
    begin
      Form1.Visible := False;
      tnd.cbSize := sizeof(tnd);
      tnd.Wnd := Handle;
      tnd.uID := 128;
      tnd.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
      tnd.uCallbackMessage := WM_TRAYNOTIFY;
      tnd.hIcon := Application.Icon.Handle;
      StrPCopy(tnd.szTip,Application.Title);
      Shell_NotifyIcon(NIM_ADD,@tnd);
    end;procedure TForm1.TrayNotifyMessage(var Sender: TMessage);
    begin
      if Sender.LParam = WM_LBUTTONDBLCLK then
      begin
        Form1.Visible := True;
        Application.Restore;
        Application.BringToFront;
      end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      Application.OnMinimize := MarkTaskBarIcon;
      MarkTaskBarIcon();
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Shell_NotifyIcon(NIM_DELETE,@tnd);
    end;end.
      

  4.   

    第一步:先在文件里加入一行:Application.ShowMainForm := false;隐藏主窗口.
    第二步:消息
    procedure WMSysCommand(var Message:TMessage);message WM_SYSCOMMAND;
        
    第三步:在窗体的oncreate事件里
    procedure TForm1.FormCreate(Sender: TObject);
    Var
        lpData: TNotifyIconData;
    begin
         lpData.cbSize := 88;
         lpData.Wnd := Form1.Handle;
         lpData.hIcon := Form1.Icon.Handle;
         lpData.uCallbackMessage := WM_BARICON;
         lpData.uID :=0;
         lpData.szTip := '节目定时播放器';
         lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
         Shell_NotifyIcon(NIM_ADD,@lpData);
        //==================================================
    end;