Hallo Freunde
,
ich hab ein TrayIcon gemacht mit TNID, aber jetzt will ich jede sekunde den szTip aktualisieren, weiss aber nicht, wie ich das am besten mache...
ich hab schon eine möglichkeit, die funktioniert, aber da muss ich das icon immer erst entfernen und dann mit dem neuen text wieder hinzufügen, das ist doof und flimmert! wie kan ich denn nur den text aktualisieren?
hier der text für das icon:
Delphi-Quellcode:
procedure TForm1.AddIcon(Enabled: Boolean);
var TNID : TNotifyIconData;
begin
FillChar(TNID,Sizeof(TNID),0);
TNID.cbSize := SizeOf(TNotifyIconData);
TNID.Wnd := Form1.Handle;
TNID.uID := 1;
TNID.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
TNID.uCallbackMessage := WM_TASKBAREVENT;
if Enabled
then
begin
tnid.hIcon := Form1.IconAN.Picture.Icon.Handle;
strcopy(TNID.szTip, 'ShutMeDown (aktiv)'); //hier soll n timer hin! (jede sekunde refreshen)
end
else
begin
tnid.hIcon := Form1.IconAUS.Picture.Icon.Handle;
strcopy(TNID.szTip, 'ShutMeDown (inaktiv)');
end;
Shell_NotifyIcon(NIM_ADD, @TNID);
end;
procedure TForm1.ChangeIcon(Enabled: Boolean);
var TNID : TNotifyIconData;
begin
TNID.Wnd := Form1.Handle;
TNID.uID := 1;
TNID.uFlags := NIF_ICON;
if Enabled
then
begin
TNID.hIcon := IconAN.Picture.Icon.Handle;
Icon := IconAN.Picture.Icon;
end
else
begin
TNID.hIcon := IconAUS.Picture.Icon.Handle;
Icon := IconAUS.Picture.Icon;
end;
Shell_NotifyIcon(NIM_MODIFY, @TNID);
end;
procedure TForm1.RemoveIcon;
var TNID : TNotifyIconData;
begin
FillChar(TNID,Sizeof(TNID),0);
TNID.cbSize := sizeof(TNotifyIconData);
TNID.Wnd := Form1.Handle;
TNID.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
TNID.uCallbackMessage := WM_TASKBAREVENT;
TNID.szTip := 'ShutMeDown (inaktiv)';
TNID.uID := 1;
Shell_NotifyIcon(NIM_DELETE, @TNID);
end;
Hoffe, ihr wisst Rat!
MfG Lefko.
PS: Wenn hier jemand meint, das sei aus seinem Programm oder so, ich hab das zum Teil aus einem Freeware-Prog-Open-Source (weiss aber nicht mehr woher) ok?