AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Shell_NotifyIcon und Windows 7 (Balloon Tips)
Thema durchsuchen
Ansicht
Themen-Optionen

Shell_NotifyIcon und Windows 7 (Balloon Tips)

Ein Thema von moelski · begonnen am 14. Aug 2009 · letzter Beitrag vom 27. Feb 2012
Antwort Antwort
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

Shell_NotifyIcon und Windows 7 (Balloon Tips)

  Alt 14. Aug 2009, 10:29
Moin !

Ich benutze Shell_NotifyIcon um ein TrayIcon zu erstellen und um Balloons anzuzeigen.
Unter XP / Vista geht es problemlos. Unter Win7 kommt hingegen nur das TrayIcon.

Balloon Tips lassen sich aber nicht darstellen.

Ich bekomme beim Erstellen des TrayIcons auch folgende Meldung:
"An attempt was made to reference a token that does not exist"

Was mich auch etwas verwundert ...
Bei dem Windows 7 kriege ich als DLL Version von Shell32 6.0.1.
Laut dem hier:
http://msdn.microsoft.com/en-us/library/bb773352(VS.85).aspx
sollte da aber 6.0.6 raus kommen

Zitat:
Shell32.dll Version cbSize
6.0.6 or higher (Windows Vista and later) sizeof(NOTIFYICONDATA)
6.0 (Windows XP) NOTIFYICONDATA_V3_SIZE
Hat jemand einen Tip was man beachten muss, um auch unter Win7 die normalen Balloon Tips nutzen zu können mittels Shell_NotifyIcon?
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Novo

Registriert seit: 27. Mai 2007
122 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Shell_NotifyIcon und Windows 7 (Balloon Tips)

  Alt 18. Aug 2009, 09:13
Entweder du benutzt die Windows 7 Controls For Delphi von www.gumpi.com/Blog
oder du benutzt die CoolTrayIcon Komponente.

funktioniert problemlos
Takeo
Don't make me angry...
You wouldn't like me when I'm angry!
Blut ist leben, Leben ist Blut, ins Licht geboren suchen wir die Dunkelheit!
  Mit Zitat antworten Zitat
Benutzerbild von holliesoft
holliesoft

Registriert seit: 4. Apr 2005
Ort: Gau-Algesheim
250 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Shell_NotifyIcon und Windows 7 (Balloon Tips)

  Alt 18. Aug 2009, 09:17
Hallo,

auch die Trayicon-Komponente aus der Jedi VCL funktioniert problemlos unter Windows 7 mit Ballon Tips

Gruß
Patrick
  Mit Zitat antworten Zitat
molotov13

Registriert seit: 15. Nov 2007
25 Beiträge
 
#4

Re: Shell_NotifyIcon und Windows 7 (Balloon Tips)

  Alt 4. Mai 2010, 10:31
Delphi-Forum.de Beitrag

Hallo Leute!

Ich habe folgendes Problem im Zusammenhang mit dem CoolTrayIcon und Windows 7:

Meine Applikation wird als Service gestartet und setzt ein TrayIcon in die Taskleiste. Unter Windows XP funktioniert dies einwandfrei.

Unter Windows 7 habe ich jedoch folgendes Problem: Das Icon wird nicht angezeigt, obwohl der Dienst ordnungsgemäß läuft. Ich habe dann herausgefunden, dass Icons standardmäßig versteckt werden und dieses in den Eigenschaften mittels "Show icon and notification" versucht zu aktivieren. Danach erhalte ich jedoch die Meldung
"Das Benachrichtigungssymbol ist derzeit nicht aktiv" und das Icon wird weiterhin nicht angezeigt. Kann mir jemand weiterhelfen. Wenn man googelt findet man nicht wirklich Hinweise, was das Problem sein könnte.

Nach diversen Stöbereien im Internet hab ich noch folgendes ausprobiert:
-Starten des Dienstes UI0Detect (Erkennung interaktiver Dienste): hat leider auch nichts gebracht.
-Auch das Aktivieren (was Standarmäßig sowieso der Fall ist) von "allow service to interact with desktop" im Service ändert nichts.

Bin schon relativ verzweifelt, was ich hier noch machen könnte. Die Antwort auf meinen Beitrag auf Delphi-forum.de:

Zitat:
Lösung: Der Dienst erledigt die Aufgabe(n), um Userinteraktion zu haben, eine Anwendung im Userkontext starten, die per IPC mit dem Dienst spricht und ggfs. Ausgaben macht (z.B. praktisch jede Firewall macht das auch so).
Damit kann ich leider nicht so gut leben, da ich (wenn möglich) meine Anwendung relativ unverändert lassen will.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Shell_NotifyIcon und Windows 7 (Balloon Tips)

  Alt 4. Mai 2010, 10:44
Damit wirst Du im Prinzip leben müssen. So wie ich das im Kopf habe, dürfen Dienste sowieso keine direkte Userinteraktion haben.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#6

Re: Shell_NotifyIcon und Windows 7 (Balloon Tips)

  Alt 4. Mai 2010, 10:50
Der Service läuft dort auf einem anderem "Desktop" und er hat keinen Zugriff auf den sichtbaren Desktop.

Fazit: ein Service kann nicht selber mit dem User kommunizieren.

Rate mal, warum fast alle große Firmen für diesen Zweck eine zusätzliche GUI-Anwendung haben, welche via IPC mit dem Service reden kann und der für dir Kommunikation mit dem User sorgt?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
peenuzz

Registriert seit: 13. Dez 2011
7 Beiträge
 
#7

AW: Shell_NotifyIcon und Windows 7 (Balloon Tips)

  Alt 23. Feb 2012, 08:31
Heyho,

ich benutze XE2 (eine FM-HD Anwendung) mit win7 64bit.
Ich kann mit Shell_NotifyIcon ein Item ins System Tray einfügen.
Leider verabschieded sich mein Tray Icon jedesmal, wenn ich den Mauszeiger über das System Tray bewege.
Ich bitte um Denkanstöße

Hier mein Code:

Code:
procedure TRandomForm.SendToTray;
var
IconData : TNOTIFYICONDATA;
ExeName : PWideChar;
begin
   IconData.cbSize := sizeof(TNOTIFYICONDATA);
   IconData.Wnd := RandomForm.handle;
   IconData.uID := 1;
   IconData.uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
   IconData.uCallbackMessage := WM_TASKBAREVENT; // $1E2D = Doppelklick linke Maustaste
   ExeName := PWideChar(Paramstr(0));
   IconData.hIcon := ExtractIcon(application.GetHashCode,ExeName, 0) ;
   strcopy(IconData.szTip,'uktfzg');
   Shell_NotifyIcon(NIM_ADD, @IconData);
end;
Und ja: ich bin ein Totengräber
Danke euch.
  Mit Zitat antworten Zitat
peenuzz

Registriert seit: 13. Dez 2011
7 Beiträge
 
#8

AW: Shell_NotifyIcon und Windows 7 (Balloon Tips)

  Alt 24. Feb 2012, 14:48
/bump
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#9

AW: Shell_NotifyIcon und Windows 7 (Balloon Tips)

  Alt 24. Feb 2012, 15:29
Wenn die anwendung nicht auf das Maus-Ereignis reagiert (sei die Anwendung verreckt/abgestürtzt oder weil garnicht oder falsch auf die Message reagiert wird), entfernt Windows diese Icons.


Sicher daß alle Parameter richtig sind und auch auf das Event ordnungsgemäß reagiert wird? Und was sagt der Debugger zu Letzerem?
http://msdn.microsoft.com/en-us/libr.../bb773352.aspx
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
peenuzz

Registriert seit: 13. Dez 2011
7 Beiträge
 
#10

AW: Shell_NotifyIcon und Windows 7 (Balloon Tips)

  Alt 27. Feb 2012, 09:38
Hallo himitsu,

danke für die Antwort. Nein, die Anwendung stürzt nicht ab.

Hier mein Mouse-Event:
Code:
procedure WMTaskbarEvent(var message: TMessage); message WM_TASKBAREVENT;
Der Debugger kommt aber garnicht erst zum Auslesen der Message.
Es wird wohl an den Parametern liegen.
Mir ist aufgefallen, dass mein RandomForm.Handle einen Index herausgibt, jedoch der Taskmanager garnicht hinterher kommt und mir immer weniger Handles anzeigt. Könnte es hier zu einem Adressierungs-Konflikt kommen?

Edit: Habe meinen Code spaßeshalber in einem neuem standard VCL-Formular ausprobiert. Dort läuft alles wunderbar. Scheint am FMX zu liegen.

Geändert von peenuzz (27. Feb 2012 um 10:30 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:55 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