我想要当鼠标放在托盘图标上时每次显示的消息都不一样,比如鼠标在托盘图标上时显示当前时间。请问该如何实现?麻烦给出详细代码,谢谢

解决方案 »

  1.   

    用个第三方控件CoolTrayIcon 控件非常方便就是设置几个属性。
      

  2.   

    那就看看那些控件的源码然后自己写,呵呵系统托盘的图标其实是一个窗体,所以可以接收消息.
    用shellnotify这个api来给系统托盘增加删除图标......ms一言难尽,还是看看那些控件的源码吧.
      

  3.   


    {还是接点分吧。以下代码运行后自动在托盘添加程序图标,每次鼠标指向图标时显示当前日期时间}unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Shellapi, ExtCtrls, Menus;const
      MouseMsg = WM_User + 1;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        { Private declarations }
        procedure MouseMessage(var Msg: TMsg); message MouseMsg;
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      ntida:TNotifyIcondataA;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
      Move(FormatDatetime('YYYY-MM-DD hh:nn:ss', Now)[1], ntida.szTip, 64);
      ntida.cbSize := sizeof(tnotifyicondataa);
      ntida.Wnd := handle;
      ntida.hIcon := Application.Icon.Handle;
      ntida.uFlags := nif_icon + nif_tip + nif_message;
      ntida.uCallbackMessage := MouseMsg;
      shell_notifyicona(NIM_ADD, @ntida);
    end;procedure TForm1.MouseMessage(var Msg: TMsg);
    begin
      Move(FormatDatetime('YYYY-MM-DD hh:nn:ss', Now)[1], ntida.szTip, 64);
      shell_notifyicona(NIM_MODIFY, @ntida);
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      shell_notifyicona(NIM_DELETE, @ntida);
    end;end.