Einzelnen Beitrag anzeigen

Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
760 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: TTrayIcon ShowBalloonHint 20x seit Windows 11

  Alt 17. Mai 2024, 15:03
Ich halte das eher für ein Problem von Delphi. Zumindest in meinem Delphi 11.2.

Da du das Icon animierst, wird via Timer DoAnimate aufgerufen (und die Icons werden wie erwartet korrekt in Windows 11 angezeigt).

Wenn du trayicon1.ShowBalloonHint; ausführst
wird FData.uFlags gesetzt:
FData.uFlags := FData.uFlags or NIF_INFO;

Und während dem DoAnimiate wird dieser Wert im Refresh des TryIcons fortan an Windows übergeben. Da NIF_INFO gesetzt bleibt, wird im Notification Center bei jeder Iconanimation ein "NIF_INFO Wunsch" abgesetzt. Windows zeigt zum Glück nur die ersten 20 an .

Lösung: Nach Anzeige des Balloons das Flag NIF_INFO aus FData.uFlags entfernen.


Dies hilft bei meinem Delphi 112 und Windows 11:
Delphi-Quellcode:
procedure TCustomTrayIcon.ShowBalloonHint;
var HuFlags : UINT;
begin
  HUFlags := FData.uFlags;
  FData.uFlags := FData.uFlags or NIF_INFO;
  FData.dwInfoFlags := Cardinal(FBalloonFlags);
  Refresh(NIM_MODIFY);
  FData.uFlags := HUFlags; // nehme hier an, dass Delphi nicht noch mehr ... baut und NF_INFO nicht in HUFlags ist
  // alternativ dazu könnte man NF_INFO explizit löschen
end;
Du schreibst, dass frühere Windows Versionen nicht betroffen sind: Ich nehme an, dass frühere Versionen eine erneute gleiche Anfrage ignoriert haben.
Michael Gasser

Geändert von Michael II (17. Mai 2024 um 23:39 Uhr)
  Mit Zitat antworten Zitat