AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TrayIcon zur Laufzeit aktualisieren

Ein Thema von hugo1990 · begonnen am 4. Jan 2007 · letzter Beitrag vom 15. Jan 2007
Antwort Antwort
Seite 2 von 2     12   
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#11

Re: TrayIcon zur Laufzeit aktualisieren

  Alt 15. Jan 2007, 18:57
Zitat von woggly4:
Zitat von Reinhard Kern:
Zitat von woggly4:
Könnte mir denn bitte jemand sagen, wie ich das hinbekomme, dass sich das Icon ändert, obwohl ich die Icons aus der Imagelist hole? Oder ist das gar nicht möglich?
Hast du es denn mit Application.Icon.Handle probiert?

Gruss Reinhard
Ja, ich habe das als Timer laufen. Sodass alle 15 Sekunden das Icon überprüft wird und geändert wird (jedenfalls SOLL das so funktionieren) Aber ich verstehe nicht, warum das Programm mit Shell_NotifyIcon zurecht kommt, wenn ich das Programm in den Systray packe. Das Symbol verändert sich auch, wenn ich das Programm hervorrufe und dann wieder in Tray packe... Ich möchte nur diesen Schritt übergehen. Also so: a) Icon a wird angezeigt und in systray gepackt b) icon a ändert sich in b - es wird aber noch das icon a im tray angezeigt. c) programm wird aus dem tray geholt und wieder reingepackt d) icon b ist nun auch im systray zu erkennen... Ich möchte halt nur Schritt c auslassen!
Hallo,

das ist ein Auszug aus einer funktionierenden Systray-Klasse, aber Achtung, bei mir stehen in TBIconList schon HIcon Handles, keine TIcons!

Delphi-Quellcode:
procedure TRKSystray.TaskBarAnimateIcon (TB : integer);
begin
IconAnimateTime := TB;
CurrentIcon := 1;
Anim_Timer.Interval := IconAnimateTime;
if IconVisible then Anim_Timer.Enabled := true;
end;

procedure TRKSystray.Timer (Sender : TObject);
var NextIcon : HIcon;
begin
if not IconVisible then exit;
CurrentIcon := CurrentIcon + 1;
NextIcon := TBIconList[CurrentIcon];
if NextIcon = 0 then
  begin
  CurrentIcon := 1;
  NextIcon := TBIconList[CurrentIcon];
  end;
SetupTNID (0, NextIcon, '');
Shell_NotifyIcon (NIM_MODIFY, @tnid);
end;

procedure TRKSystray.SetupTNID (NMsg : integer; I : HIcon; T : ShortString);
var Flags : integer;
begin
FillChar (tnid,sizeof(TNOTIFYICONDATA),0);
tnid.cbSize := sizeof(TNOTIFYICONDATA);
tnid.Wnd := Parent.Handle;
tnid.uID := 121;
Flags := 0;
if NMsg > 0 then
  begin
  Flags := Flags + NIF_MESSAGE;
  tnid.uCallbackMessage := WM_TASKBAREVENT;
  end;
if I > 0 then
  begin
  Flags := Flags + NIF_ICON;
  tnid.hIcon := I;
  end;
if Length (T) > 0 then
  begin
  Flags := Flags + NIF_TIP;
  StrPLCopy (tnid.szTip, SystrayTextBuffer, 63);
  end;
tnid.uFlags := Flags;
end;
Gruss Reinhard
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz