Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Mehrere Tray-Icons (ohne Komponente) (https://www.delphipraxis.net/65209-mehrere-tray-icons-ohne-komponente.html)

ManuMF 13. Mär 2006 19:24


Mehrere Tray-Icons (ohne Komponente)
 
Hallo,

ich möchte für mein Programm mehrere Icons im Tray anzeigen. Mit einem hat es bis jetzt prolemlos funktioniert. Ich möchte auch keine Komponente dafür verwenden, da ich mit mehreren Probleme hatte.

Der Code ist (abgewandelt) von DSDT.info:

Delphi-Quellcode:
procedure TaskBarAddIcon(TNID: TNotifyIconData; IIcon: TIcon; IInfo: String);
begin
  with TNID do
  begin
    cbSize := SizeOf(TNotifyIconData);
    Wnd := MainForm.Handle;
    uID := 1;
    uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
    uCallbackMessage := WM_TASKBAREVENT;
    hIcon := IIcon.Handle;
    StrCopy(szTip, PChar(IInfo));
  end;
  Shell_NotifyIcon(NIM_ADD, @TNID);
end;


procedure TaskBarRemoveIcon(TNID: TNotifyIconData);
begin
  Shell_NotifyIcon(NIM_DELETE, @TNID);
end;
Bisher habe ich TNID global deklariert.
Delphi-Quellcode:
var TNID: TNotifyIconData;
Das hat gut geklappt. Also habe ich das duch folgendes ersetzt:
Delphi-Quellcode:
var Icon1, Icon2: TNotifyIconData;
uns TNID stattdessen als Prozedur-Parameter eingefügt.

:arrow: Wenn ich nun die Add-Funktion 2 mal ausführe (1. mit Icon1, 2. mit Icon2), wird nur das Icon1 angezeigt. Woran könnte das liegen?

Danke,
ManuMF

[Edit]Sorry, sollte eigentlich in Sonstiges zu Delphi[/edit]

Muetze1 13. Mär 2006 19:41

Re: Mehrere Tray-Icons (ohne Komponente)
 
Nutze eine unterschiedliche ID in der NOTIFYICONDATA Struktur....

ManuMF 13. Mär 2006 20:03

Re: Mehrere Tray-Icons (ohne Komponente)
 
Hallo,

Das habe ich probiert, aber ohne Erfolg :cry: .

Ich habe mir jedoch eine eigene Komponente geschrieben, die diesen Code verwendet, und mit dieser funktioniert es wunderbar! :gruebel: Ich habe sie bisher nur nicht verwendet, da sie in einem anderen Projekt seltsamerweise immer eine Zugriffsverletzung erzeugte (habe ich auch hier geschildert).

Also, damit hat es sich erledigt.

Gruß,
ManuMF

SirThornberry 13. Mär 2006 20:21

Re: Mehrere Tray-Icons (ohne Komponente)
 
aus irgend einem Grund wird in den meisten Beispielen eine Globale für die Traystrukutur genutzt. Ich würde einfach empfehlen eine Private-Variable daraus zu machen, und bei Nutzung verschiedener ID's gibt es auch keine Probleme zwei strukuren im Tray zu registrieren. Eventuell hast du ja in deinem Projekt der Methode zum Registrieren 2 mal die gleiche Struktur übergeben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:42 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