而不在其他地方显示,我找不到相应的函数,请给出源程序,谢谢

解决方案 »

  1.   


    const
     wm_traynotify=wm_user+100;  type
      TForm1 = class(TForm)
        Button1: TButton;
       procedure Button1Click(Sender: TObject);
      private 
        { Private declarations }
       procedure myproc(var message:tmessage);
       message wm_traynotify;
     public
        { Public declarations }
      end;var
    tnd:totifyicondata;implementation{$R *.dfm}procedure tform1.myproc(var message:tmessage);
    begin
    if message.lparam=wm_lbuttondown then
    begin
    shell_notifyicon(nim_delete,@tnd);
    form1.Show;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
    tnd.cbSize:=sizeof(tnd);
    tnd.Wnd:=self.Handle;
    tnd.uID:=0;
    tnd.uFlags:=nif_message or nif_tip or nif_icon;
    tnd.uCallbackMessage:=wm_traynotify;
    tnd.hIcon:=application.Icon.Handle;
    tnd.szTip:='my soft';
    shell_notifyicon(nim_add,@tnd);
    form1.Hide;
    end;
      

  2.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Menus,shellapi;const
      ICON_ID = 1;
      MI_ICONEVENT = WM_USER + 1;type
      TForm1 = class(TForm)
        PopupMenu1: TPopupMenu;
        AppItem: TMenuItem;
        exit: TMenuItem;
        yesorno: TMenuItem;
        procedure FormCreate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure FormActivate(Sender: TObject);
        procedure AppItemClick(Sender: TObject);
        procedure exitClick(Sender: TObject);
        procedure yesornoClick(Sender: TObject);
      private
        { Private declarations }
        NormalIcon, DisabledIcon:TIcon;
        Status:Boolean;        // 标识“允许使用”还是“禁止使用”
        procedure InstallIcon;
        procedure ChangeIcon(s:Boolean);
        procedure UnInstallIcon;
        procedure IconOnClick(var msg: TMessage); message MI_ICONEVENT;  public
        { Public declarations }
      end;var
      Form1: TForm1;implementationuses Unit2;{$R *.DFM}procedure TForm1.ChangeIcon(s:boolean);
    var
      IconData: TNotifyIconData;
    begin
      IconData.cbSize := SizeOf(IconData);
      IconData.Wnd := Handle;
      IconData.uID := ICON_ID;
      if s=False then  // 禁止使用
      begin
        IconData.hIcon := DisabledIcon.Handle;
        Status:=False;
        AppItem.Enabled:=False;
      end
      else              // 允许使用
      begin
        IconData.hIcon := Normalicon.Handle;
        Status:=True;
        AppItem.Enabled:=True;
      end;
      IconData.uFlags := NIF_ICON;
      Shell_NotifyIcon(NIM_MODIFY, @IconData);
    end;procedure TForm1.InstallIcon;       // 安装图标
    var
      IconData: TNotifyIconData;
      AppPath: string;
    begin
      AppPath:=ExtractFileDir(Application.ExeName);
      NormalIcon := TIcon.Create;
      DisabledIcon := TIcon.Create;
      NormalIcon.LoadFromFile( AppPath+'\'+'gt1.ico' );       // 允许使用状态下的图标
      DisabledIcon.LoadFromFile( AppPath+'\'+'gt2.ico' );     // 禁止使用状态下的图标
      IconData.cbSize := SizeOf( IconData );
      IconData.Wnd := Handle;
      IconData.uID := ICON_ID;
      IconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
      IconData.uCallBackMessage := MI_ICONEVENT;
      IconData.hIcon := NormalIcon.Handle;
      IconData.szTip := '这是任务栏的状态指示区上加图标的例程';
      Shell_NotifyIcon( NIM_ADD, @IconData );
    end;procedure TForm1.UnInstallIcon;    // 卸载图标
    var
      IconData: TNotifyIconData;
    begin
      IconData.cbSize := SizeOf( IconData );
      IconData.Wnd := Handle;
      IconData.uID := ICON_ID;
      Shell_NotifyIcon( NIM_DELETE, @IconData );
    end;procedure TForm1.IconOnClick(var msg:Tmessage);
    var
      p : TPoint;
    begin
      // 如果按下的是鼠标左键,并且允许显示,则显示Form2
      if ( (msg.lParam = WM_LBUTTONDOWN) and (Status=True) ) then
      Form2.Show;
      // 如果按下的是鼠标右键,则显示弹出菜单
      if (msg.lParam = WM_RBUTTONDOWN) then
        begin
           GetCursorPos( p );
           PopupMenu1.Popup(p.x ,p.y );
        end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      // 安装图标并隐藏主窗体
      Status:=True;
      InstallIcon;
      ChangeIcon( True );
      ShowWindow( Application.Handle,SW_HIDE );
      SetWindowLong( Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW );
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      // 卸载图标并释放图标资源
      UnInstallIcon;
      NormalIcon.Free;
      DisabledIcon.Free;
    end;procedure TForm1.FormActivate(Sender: TObject);
    begin
      // 隐藏Form1   注意FORM1的Borderstyle设置为bsNone
      Form1.width:=0;
      Form1.Height:=0;
      ShowWindow( Application.Handle, SW_HIDE );
    end;procedure TForm1.AppItemClick(Sender: TObject);
    begin
      Form2.Show;
      showmessage('ok');
    end;procedure TForm1.exitClick(Sender: TObject);
    begin
       Close;
    end;procedure TForm1.yesornoClick(Sender: TObject);
    begin
     if(Status=True)then
       begin
         ChangeIcon( False );
         yesorno.Caption:='允许使用(&Y)';
       end
       else
       begin
         ChangeIcon( True );
         yesorno.Caption:='禁止使用(&D)';
      end;
    end;end.
      

  3.   

    http://www.csdn.net/cnshare/soft/12/12349.shtm