Entwickler-Ecke

Windows API - Systray-Icon zur Laufzeit wechseln


DELPHIn - So 18.01.04 21:13
Titel: Systray-Icon zur Laufzeit wechseln
Hallo,

ein kleines Problem....

Mein Programm zur Überwachung der Plattengrössen legt sein Symbol beim Start in die Systray (neben die Uhr).
Nun soll sich dieses Symbol zur Laufzeit ändern. Wie stelle ich das an?

So kommt das Icon in die Systray:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
....
  var
  NIM : TNotifyIconData;
....
procedure IcontoSystray;
begin
  with NIM do
  begin
    cbSize := SizeOf (nIM);
    Wnd := Handle;
    uID := 0;
    uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
    uCallbackMessage := IC_CLICK;
    hIcon := imagefehler.Picture.Icon.Handle;  //hier wird das Icon übergeben
    szTip := 'Hilfe';
  end;
  Shell_NotifyIcon(NIM_ADD, @NIM);
end;


Und so dachte ich könnte ich es dann ändern:

Delphi-Quelltext
1:
NIM.hIcon := imagefehler.Picture.Icon.Handle;                    


Warum geht das nicht?
Ich habe hier im Forum zwar vieles über Systray und TNA gefunden, das Problem aber nicht!

Danke

Moderiert von user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt


Delete - So 18.01.04 21:16
Titel: Re: Systray-Icon zur Laufzeit wechseln
DELPHIn hat folgendes geschrieben:
Und so dachte ich könnte ich es dann ändern:

Delphi-Quelltext
1:
NIM.hIcon := imagefehler.Picture.Icon.Handle;                    


Warum geht das nicht?
Ich habe hier im Forum zwar vieles über Systray und TNA gefunden, das Problem aber nicht!

Weil´s kein Problem ist. Wenn du etwas ändern willst, musst du den Befehl Shell_NotifyIcon noch einmal mit NIM_MODIFY aufrufen. Das steht normalerweise in jedem mir bekannten TNA-Tutorial (inkl. meinem eigenen).


DELPHIn - Mo 19.01.04 20:31

Ich dummbatz! :oops:
Lesen müsste man können.
Jetzt gehts.

Danke