![]() |
TTrayIcon ShowBalloonHint 20x seit Windows 11
Delphi 11.
seit Windows 11 wird ShowBalloonHint 20x im NotificationCenter von Windows angezeigt. In Windows 10 nur 1x. Ist das ein Bug von Delphi? kann man ganz einfach testen: Neues Projekt. TTrayIcon drauf. Eigenschaften : Animated := TRUE visible :=TRUE; BallonFlag = btInfo; BalloonHint:='Test; BalloonTitle:= 'Test; im Quellcode -> trayicon1.ShowBalloonHint; Nun sieht man im NotificationCenter wie die Meldung auf +20 hochgezählt wird. Lässt man das gleich in Windows 10 laufen kommt nur eine Notification rein. |
AW: TTrayIcon ShowBalloonHint 20x seit Windows 11
Das ist bei mir auch so. Es wird aber mit NIM_MODIFY an Windows übermittelt. Das sieht eher nach einem Bug in Windows aus.
|
AW: TTrayIcon ShowBalloonHint 20x seit Windows 11
Ok verstehe.
Gibt es eine Alternative die Notification zu generieren? Finde die ganze praktisch und unsere Kunden finden das auch gut. Aber einige beschweren sich das Sie zugebombt werden oder die Anzeige unten rechts flackert. Zum Glück setzen von unseren Kunden nicht so viele auf 11. Die sind alle auf 10 umgestiegen und werden wohl 11 überspringen. |
AW: TTrayIcon ShowBalloonHint 20x seit Windows 11
Wen triggert man da jetzt am besten wie an um das zu beseitigen?
Ok, man könnte einen bugreport bei EMBT aufmachen, aber wenn Windows die Ursache ist, ist das ja nicht zielführend. => wie mache ich einen Bugreport gegenüber Microsoft/Windows auf? |
AW: TTrayIcon ShowBalloonHint 20x seit Windows 11
Zitat:
|
AW: TTrayIcon ShowBalloonHint 20x seit Windows 11
Aber du benutzt auch wirklich ein animiertes Icon? Du könntest die Animation vielleicht für die Zeit stoppen?
|
AW: TTrayIcon ShowBalloonHint 20x seit Windows 11
Ohne animate wird es in der Tat nur 1x in das NotificationCenter gesetzt.
|
AW: TTrayIcon ShowBalloonHint 20x seit Windows 11
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:
Du schreibst, dass frühere Windows Versionen nicht betroffen sind: Ich nehme an, dass frühere Versionen eine erneute gleiche Anfrage ignoriert haben.
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; |
AW: TTrayIcon ShowBalloonHint 20x seit Windows 11
Hallo,
ok, das sieht ja jetzt scheinbar nach einem Bug in Delphi aus. Da wäre es toll, wenn der originale Poster mal unter quality.embarcadero und unter ![]() bitte erfasst. Dann besteht die Chance, dass EMBT das korrigiert. Grüße und schönen Feiertag TurboMagic |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz