1。去www.torry.ru上找找,有源程序
2。看看Delphi5开发者指南,有详细说明。

解决方案 »

  1.   

    以前这样的帖子太多了,你应该搜索一下!
    下面是我拷贝来的!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为双击右键,
                )
      关于Demo:
            这个演示程序给出了TNotifyIcon的基本用法.
      
      包含文件:
        NotifyIcon.dcr
        NotifyIcon.pas
        DemoUnit.pas
        DemoUnit.dfm
        PopUnit.pas
        PopUnit.dfm
        Demo.dpr
        Readme.txt
      
      声明:
                TNotifyIcon  控件  V  1.01
      1.这是一个免费控件.
      2.如果你使用它,请发一个E-Mail给作者,谢谢.
      3我在Delphi3.0  &    4.0  上使用成功
      4.若要传播它,请完全分发上述8个文件
      
                作者    南昌大学计算系95(1)    付昱纲  1998.8.17    21:50
                E-mail      [email protected]    
      
      unit  NotifyIcon;
      
      interface
      
      uses
          Windows,  Messages,  SysUtils,  Classes,  Graphics,  Controls,  Forms,  Dialogs,
          DsgnIntf,ShellApi,ExtCtrls,Menus;
      
      const
                  WM_MY_Notify=WM_USER+100;
      type
      
          TPopupStyle=Set  of  (Left_Click,Right_Click,Left_DbClick,Right_DbClick);
          TWhoButton=(b_Left,b_Right);
          TMouseEvent=
          procedure(Sender:TObject;x,y:Word;WhoButton:TWhoButton)
                  of  Object;
      
      //---------class  TNotifyIcon---------
          TNotifyIcon  =  class(TCustomControl)
          private
              {  Private  declarations  }
              FIcon:TIcon;
              FPda:PNOTIFYICONDATA;
              FTitle:string;
              FIconVisible:boolean;
              FPopupMenu:TPopupMenu;
              FPopupStyle:TPopupStyle;
              FOnIconMouseDown:TMouseEvent;
              FOnIconDoubleClick:TMouseEvent;
              procedure  SetIcon(Icon:TICON);
              procedure  SetTitle(NewTitle:string);
              function  IsShowing:boolean;
              procedure  ShowIt(Accept:boolean);
              procedure  NotifyIconClick(var  msg  :  TMessage);
                  Message  WM_My_Notify;
          protected
              {  Protected  declarations  }
            public
              {  Public  declarations  }
            property  IsVisible:boolean  read  IsShowing  write  ShowIt;
            constructor  Create(AOwner:  TComponent);  override;
            procedure  ShowIcon;
            procedure  HideIcon;
            destructor  Destroy;  override;
            procedure  ModifyIcon(NewIcon:TIcon);
            procedure  Paint;override;
          published
              {  Published  declarations  }
              property  Height  default  33;
              property  Width    default  33;
              property  NotifyIcon:TIcon  read  FIcon    write  SetIcon;
              property  Title:string  read  FTitle  write  SetTitle  ;
              property  OnIconDoubleClick:TMouseEvent
                  read  FOnIconDoubleClick  write  FOnIconDoubleClick;
              property  OnIconMouseDown:TMouseEvent
                  read  FOnIconMouseDown  write  FOnIconMouseDown;
              property  PopupMenu:TPopupMenu  read  FPopupMenu  write  FPopupMenu;
              property  PopupStyle:TPopupStyle  read  FPopupStyle
                                      write  FPopupStyle  default  [];
        end;
      
      

  2.   

    procedure  Register;
      
      implementation
      
      procedure  Register;
      begin
          RegisterComponents('MyControl',  [TNotifyIcon]);
      end;
      
      procedure  TNotifyIcon.ShowIt(Accept:boolean);
      begin
          if    Accept=true  then  ShowIcon
          else  HideIcon;
      end;
      
      procedure  TNotifyIcon.Paint;
      begin
      if  (csDesigning  in  ComponentState)  then
      begin
        Width:=33;
        Height:=33;
        With  Canvas  do
        begin
          Brush.Color:=clInfoBk;
          Ellipse(0,0,Self.Width,Self.Height);
          Font.Color:=clBlue;
          Brush.Style:=bsClear;
          FloodFill(5,5,clInfoBk,fsBorder);
          Brush.Color:=clInfoBk;
          TextOut(3,Self.Height  div  2-6,'Notify');
        end
      end;
      end;
      
      procedure  TNotifyIcon.NotifyIconClick(var  msg  :  TMessage);
        var  p:TPoint;
      begin
        try
                case  msg.LParam  of
                  WM_LBUTTONDOWN:
                      begin
                        GetCursorPos(p);
                        if  Left_Click  in  FPopupStyle  then
                        begin
                            SetForegroundWindow(ParentWindow);
                            FPopupMenu.Popup(p.x,p.y);
                        end;
                        if  Assigned(FOnIconMouseDown)  then
                        begin
                            FOnIconMouseDown(Self,p.x,p.y,b_Left);
                        end;
                      end;
                  WM_RBUTTONDOWN:
                      begin
                        GetCursorPos(p);
                        if  Right_Click  in    FPopupStyle  then
                        begin
                            SetForegroundWindow(ParentWindow);
                            FPopupMenu.Popup(p.x,p.y);
                        end;
                        if  Assigned(FOnIconMouseDown)  then
                        begin
                            FOnIconMouseDown(Self,p.x,p.y,b_Right);
                        end;
                      end;
                  WM_LBUTTONDBLCLK:
                      begin
                        GetCursorPos(p);
                        if  Left_DbClick  in  FPopupStyle  then
                        begin
                            SetForegroundWindow(ParentWindow);
                            FPopupMenu.Popup(p.x,p.y);
                        end;
                        if  Assigned(FOnIconDoubleClick)  then
                        begin
                            FOnIconDoubleClick(Self,p.x,p.y,b_Left);
                        end;
                      end;
                  WM_RBUTTONDBLCLk:
                      begin
                        GetCursorPos(p);
                        if  Right_Click  in  FPopupStyle  then
                        begin
                            SetForegroundWindow(ParentWindow);
                            FPopupMenu.Popup(p.x,p.y);
                        end;
                        if  Assigned(FOnIconDoubleClick)  then
                        begin
                            FOnIconDoubleClick(Self,p.x,p.y,b_Right);
                        end;
                      end;
                end;
        except
        end;
      end;
      
      function  MAKELANGID(p,  s:word):Cardinal;
      begin
          result:=  (((s)shl  10)  or(p));
      end;
      
      constructor  TNotifyIcon.Create(AOwner:  TComponent);
      begin
      try
        inherited  Create(AOwner);
        FIcon:=TIcon.Create;
        Height:=36;
        Width:=36;
        Visible:=false;
        FTitle:='Welcome';
        FIconVisible:=false;
        //-------------set  tray  info---------
        ParentWindow:=TWinControl(AOwner).Handle;
        New(Fpda);
          With  FPda^  do
          begin
              uCallbackMessage:=WM_MY_Notify;
              cbsize:=SizeOf(FPda^);
              uID:=200;
              wnd:=Handle;
              uFlags:=NIF_ICON+NIF_Tip+NIF_MESSAGE;
            end;
      
      if  (csDesigning  in  ComponentState)  then
      begin
        if  GetUserDefaultLCID  =  MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED)  then
                  Application.MessageBox(
              'Write  by  南昌大学  付昱纲'#13#13'E-mail:[email protected]'#13#13'                      1998.8.17',
              'TNotifyIcon  控件  V  1.01',MB_OK+  MB_ICONINFORMATION)
        else
                  Application.MessageBox(
              'Write  by  NanChang  University    FuYuGang'#13#13'E-mail:[email protected]'#13#13'                      1998.8.17',
              'TNotifyIcon  Component  V  1.01',MB_OK+  MB_ICONINFORMATION);
      end;
        except
          ShowMessage('TNotifyIcon  Create  error');
        end;
      end;
      
      procedure  TNotifyIcon.SetIcon(Icon:TICON);
      begin
        FIcon.Assign(Icon);
      end;
      
      procedure  TNotifyIcon.ShowIcon;
      begin
      try
        if  FIcon.Handle=0  then
        begin
              Exit;
        end;
        if  FIcon.Handle<  >  FPda^.hIcon  then
                    HideIcon;
        if  FIconVisible=false  then
        begin
          FPda^.hIcon:=FIcon.handle;
          FIconVisible:=true;
            Shell_NotifyIcon(NiM_ADD,FPda);
        end;
      except
        ShowMessage('TNotifyIcon  Show  Error  ');
      end;
      end;
      
      procedure  TNotifyIcon.HideIcon;
      begin
      try
        if  FIconVisible  then
        begin
          FIconVisible:=false;
          Shell_NotifyIcon(NiM_DELETE,FPda);
        end;
      except
        ShowMessage('TNotifyIcon  Hide  Error');
      end;
      end;
      
      procedure  TNotifyIcon.SetTitle(NewTitle:string);
      begin
        FTitle:=NewTitle;
        StrCopy(FPda^.szTip,PChar(FTitle));
        if  FIconVisible  then
        begin
            HideIcon;
            ShowIcon;
        end;
      end;
      
      destructor  TNotifyIcon.Destroy;
      begin
      try
          HideIcon;
          Dispose(FPda);
          FIcon.Free;
        inherited  Destroy;
      except
        ShowMessage('TNotifyIcon  Destroy  Error');
      end;
      end;
      
      procedure  TNotifyIcon.ModifyIcon(NewIcon:TIcon);
      begin
      try
        SetIcon(NewIcon);
        FPda^.hIcon:=FIcon.handle;
        if  FIconVisible    then
            Shell_NotifyIcon(NiM_Modify,FPda);
      except
        ShowMessage('TNotifyIcon  Modify  Error');
      end;
      end;
      
      function  TNotifyIcon.IsShowing:boolean;
      begin
          Result:=FIconVisible;
      end;
      
      end.
      

  3.   

    unit NotifyIcon1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ShellApi;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    const
    MY_TRAY_ICON=1000;
    WM_TRAYNOTIFY=2000;var
      Form1: TForm1;
      nid:TNOTIFYICONDATA;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
    nid.cbsize:=sizeof(tnotifyicondata);
    nid.wnd:=handle;
    nid.uID:=MY_TRAY_ICON;
    nid.uflags:=nif_message or nif_icon or nif_tip;
    nid.ucallbackmessage:=wm_traynotify;
    nid.hicon:=application.Icon.Handle ;
    nid.sztip:='NetMax';
    shell_notifyicon(nim_add,@nid);
    showwindow(application.Handle,sw_hide);end;end.
      

  4.   

    unit NotifyIcon1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ShellApi;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    const
    MY_TRAY_ICON=1000;
    WM_TRAYNOTIFY=2000;var
      Form1: TForm1;
      nid:TNOTIFYICONDATA;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
    nid.cbsize:=sizeof(tnotifyicondata);
    nid.wnd:=handle;
    nid.uID:=MY_TRAY_ICON;
    nid.uflags:=nif_message or nif_icon or nif_tip;
    nid.ucallbackmessage:=wm_traynotify;
    nid.hicon:=application.Icon.Handle ;
    nid.sztip:='NetMax';
    shell_notifyicon(nim_add,@nid);
    showwindow(application.Handle,sw_hide);end;end.
      

  5.   

    download cooltrayicon component is the fast way!
    from http://www3.ewebcity.com/troels/delphi.asp