[WinAPI] Tooltip eines Icons im SysTray auslesen

theHacker

sieht vor lauter Ads den Content nicht mehr
Teammitglied
ID: 69505
L
20 April 2006
22.682
1.316
Moin.

Wie stelle ich es am besten an, um von einem SysTray-Icon den Tooltip-Text auszulesen? Die Systemsteuerung kriegt es ja auch hin, dann müsste ich es ja auch irgendwie schaffen.
Shell_NotifyIcon() bringt nix, weil ich damit nur ändern, aber nicht auslesen kann; außerdem is die uID application-gebunden und ich will ja ein fremdes Icon auslesen.

Perfekt wäre, wenn ich direkt über den Prozess rankomme und nur sagen muss, dass ich dem sein(e) Icon(s) haben will; alternativ würde mir auch reichen, wenn ich eben alle Symbole durchiterieren kann.

Hat da wer ne Idee, wie ich das anstellen kann?
 
Reden wir von XP oder Vista? Bei XP habe ich sowas ähnliches mal gemacht. Leider komme ich erst am Mo wieder an den PC wo der Code drauf ist und Google hilft mir auch gerade nicht weiter...
Mein Programm hatte, wenn ich mich recht entsinne, einen Textbox Inhalt geändert bzw. gelesen. Ich habe dabei irgendwie auf den Speicher des anderen Prozesses zugegriffen. Ist natürlich nicht ganz sauber... Von daher weiß ich nicht, ob das bei Vista noch funzt.
Falls Du bis Mo warten kannst, kann ich den Code mal raussuchen.
 
Reden wir von XP oder Vista?
XP. Ich glaube, unter Vista muss dieser Code niemals laufen, da es nur für ein kleines Tool für mich selber gedacht is.
Ich habe dabei irgendwie auf den Speicher des anderen Prozesses zugegriffen. Ist natürlich nicht ganz sauber...
Hauptsache, es funktioniert.
In den Speicher des anderen Prozesse eindringen, da bin ich auch noch nicht drauf gekommen; hätte da Angst, dass ich mich in der Datenflut verlauf.

Mein Grundgedanke war irgendwie, dem SysTray ne Message zu schicken, dass der Cursor über dem Symbol is und ihn dazu zwingen, den Tooltip zu zeigen.
Gefällt mir aber ned wirklich, da ich ja nur die Infos haben will, ohne, dass jede Sekunde der Tooltip wirklich erscheint.
Falls Du bis Mo warten kannst, kann ich den Code mal raussuchen.
Wenn sonst keiner postest, hab ich ja keine Wahl ;)
Läuft ned davon, da es eigentlich nix Wichtiges is.
 
Hab' heute mal in meinem alten Projekt nachgeschaut. Es war kein Textbox Inhalt sondern ein ListView Item. Vielleicht hilft das als Beispiel um an die Daten des anderen Prozesses ranzukommen.
Mit Hilfe der Kommentare im Code und Google konnte ich auch den Ursprung wiederfinden: Klick

Ich hab' gerade nicht parat wie man an den Tooltip-Text des eigenen Systray Icons rankommt, aber das müßte ja möglich sein.

Ich hatte heute noch keine Zeit mich genauer damit befassen, kann ich aber die nächsten Tage nochmal machen.
 
Ein sehr interessantes Stückchen Code, was mir allerdings bei meinem Problem nix hilft, weil ich keine Message gibt, die ich an den Zielprozess schicken könnte, die mir dann den gesuchten String freiwillig übergibt :-?

Ich bräuchte, wenn auf diese Weise, eine Art Hack, dass ich sagen kann "Wenn der Zielprozess Shell_NotifyIcon() aufruft, dann bitte möchte ich die Parameter dieses Aufrufs auslesen".
 
Jup, nachdem ich genauer hingesehen habe, kann ich mich nur anschliessen: Interessanter Code aber leider nutzlos ;)

Allerdings habe ich nochmal ein wenig auf meiner Lieblingsseite für solche Problemstellungen rumgewühlt und bin auf einen Artikel gestoßen, der besser aussieht:

Klick

Ich hab's zwar nicht ausprobiert, aber es sieht mir doch vielversprechend aus.
 
OMG! Das isses 8O
god.gif
Genau das such ich. Muss ich morgen gleich ausprobieren :D

edit:
Ja, perfekt. Es hat hingehauen. Vielen Dank :)
 
Zuletzt bearbeitet: