谢谢

解决方案 »

  1.   

    包含 ShellAPI
    用 TNotifyIconData 即可
    2、TNotifyIcon 控件1.01 (Build use Delphi 3.0) 说明:
    作用:
     往通知区加图标,并可显示,隐藏,修改这个图标.
      属性(properties):
     NotifyIcon:TIcon  欲加在通知区的图标
     IsVisible:boolean NotifyIcon是否显示的属性
     Title:string  通知区图标上的提示(最多64个字符)
     PopupMenu:TPopupMenu 点击通知区图标弹出的菜单 
     PopupStyle:TPopupStyle 弹出菜单的方式             
      TPopupStyle=Set of (Left_Click,Right_Click,Left_DbClick,Right_DbClick);
    方法(methods):   
       ShowIcon  将图标显示在通知区上
       HideIcon  将通知区上的图标隐藏
       ModifyIcon 修改通知区上的图标(若IsVisible=false,则不显示出来)
       Create(AOwner: TComponent); override; 构造方法
       Destroy; override; 析构方法
    事件(Events):
        OnIconMouseDown: 
          procedure(Sender:TObject;x,y:Word;WhoButton:TWhoButton) of Object;
          (
           在Mouse点击通知区上的图标时发生,x,y为Mouse在屏幕上的坐标,
           WhoButton=b_Left为点击左键,WhoButton=b_Right为点击右键,
          )
        OnIconDoubleClick: 
          procedure(Sender:TObject;x,y:Word;WhoButton:TWhoButton) of Object;
         (
          在Mouse双击通知区上的图标时发生,x,y为Mouse在屏幕上的坐标,
          WhoButton=b_Left为双击左键,WhoButton=b_Right为双击右键,
         )
      

  2.   

    给你段代码,自己研究一下
    工程单元
    program Project1;uses
      Forms,
      Unit1 in 'Unit1.pas' {MainForm};{$R *.RES}begin
      Application.Initialize;
      Application.ShowMainForm := False;//运行后隐藏主界面
      Application.CreateForm(TMainForm, MainForm);
      Application.Run;
    end.
    主程序
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ShellApi, Menus, ImgList, ExtCtrls;const
      WM_ICONTRAY = WM_USER + 1;type
      TMainForm = class(TForm)
        PopupMenu1: TPopupMenu;
        N11: TMenuItem;
        N21: TMenuItem;
        N31: TMenuItem;
        Exit1: TMenuItem;
        Timer1: TTimer;
        ImageList1: TImageList;
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
        procedure N31Click(Sender: TObject);
        procedure N11Click(Sender: TObject);
        procedure N21Click(Sender: TObject);
        procedure Exit1Click(Sender: TObject);
      private
        TrayIconData: TNotifyIconData;
        { Private declarations }
      public
        procedure TrayMessage(var Msg: TMessage); message WM_ICONTRAY;
        { Public declarations }
      end;var
      MainForm: TMainForm;implementation{$R *.DFM}procedure TMainForm.TrayMessage(var Msg: TMessage);
    var
      p : TPoint;
    begin
      case Msg.lParam of
        WM_LBUTTONDOWN:
        begin
          ShowMessage('右键弹出菜单!');
        end;
        WM_RBUTTONDOWN:
        begin
           SetForegroundWindow(Handle);
           GetCursorPos(p);
           PopUpMenu1.Popup(p.x, p.y);
           PostMessage(Handle, WM_NULL, 0, 0);
        end;
      end;
    end;procedure TMainForm.FormCreate(Sender: TObject);
    begin
      with TrayIconData do
      begin
        cbSize := SizeOf(TrayIconData);
        Wnd := Handle;
        uID := 0;
        uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
        uCallbackMessage := WM_USER+1;
        hIcon := Application.Icon.Handle;
        StrPCopy(szTip, Application.Title);
      end;  Shell_NotifyIcon(NIM_ADD, @TrayIconData);
    end;procedure TMainForm.FormDestroy(Sender: TObject);
    begin
      Shell_NotifyIcon(NIM_DELETE, @TrayIconData);
    end;procedure TMainForm.Timer1Timer(Sender: TObject);
    {$J+}
    const
      Index : Integer = 0;
    {$J-}
    var
      Icon: TIcon;
    begin
      Inc(Index);
      if Index = 2 then Index:=0;  Icon:=TIcon.Create;
      try
        ImageList1.GetIcon(Index,Icon);
        TrayIconData.hIcon := Icon.Handle;
        Shell_NotifyIcon(NIM_Modify, @TrayIconData);
      finally
        Icon.Free;
      end;
    end;
    procedure TMainForm.N31Click(Sender: TObject);
    begin
      Timer1.Enabled:=not Timer1.Enabled;
    end;procedure TMainForm.N11Click(Sender: TObject);
    begin
      MainForm.Show;
    end;procedure TMainForm.N21Click(Sender: TObject);
    begin
      MainForm.Hide;
    end;procedure TMainForm.Exit1Click(Sender: TObject);
    begin
      MainForm.Close;
    end;end.
      

  3.   

    TTrayIcon 是一個任務欄圖標構件,設置它的Icon屬性(顯示在任務欄內)及PopupMenu 為PopupMenu1(在本程序中),Active=true具體程序如下:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Menus, TrayIcon;type
      TForm1 = class(TForm)
        TrayIcon1: TTrayIcon;
        PopupMenu1: TPopupMenu;
        mnuOpen: TMenuItem;
        mnuExit: TMenuItem;
        mnuTip: TMenuItem;
        procedure mnuOpenClick(Sender: TObject);
        procedure mnuExitClick(Sender: TObject);
        procedure mnuTipClick(Sender: TObject);
      private
        { Private declarations }
        procedure CatchMessage(var Message:TMessage);Message WM_SysCommand;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure Tform1.CatchMessage(var Message:TMessage);
    begin
    if Message.WParam=SC_MINIMIZE then
      begin
       Application.Minimize;
       Visible := false;
      end
    else
       inherited;
    end;procedure TForm1.mnuOpenClick(Sender: TObject);
    begin
      visible := true;
    end;procedure TForm1.mnuExitClick(Sender: TObject);
    begin
      close;
    end;procedure TForm1.mnuTipClick(Sender: TObject);
    begin
      ShowMessage('Demo');
    end;end.
      

  4.   

    隐藏可以这样的,先发送最小化的消息,然后
    输入以下语句,
    showwindow(form1.hanlde,sw_hide);
    showwindow(form1.hanlde,sw_hide);
    一定要输入两句