![]() |
Tray Icon eines fremden Programms verbergen/anzeigen
Hi!
Ich suche eine Möglichkeit, das Tray Icon eines fremden Programms zu verbergen, und bei Bedarf wieder anzuzeigen. Das Handle des Hauptfensters ist mir bekannt. Ich habe eine Komponente gefunden mit der dies möglich ist, aber leider ist sie nicht Open Source. Die funktion "Shell_NotifyIcon" habe ich schon verwendet, allerdings nur bei eigenen Icons. Bin für jeden Tip/Link dankbar :thuimb: Ad Astra, Fellmer [Edit 1]: Idee: Wenn ich die Eigenschaften des Tray Icons festhalten könnte, sollte es doch möglich sein das fremde Icon mittels "NIM_ADD"/"NIM_DESTROY" zu entfernen/anzuzeigen. |
Re: Tray Icon eines fremden Programms verbergen/anzeigen
NIM_DESTROY ist nicht so gut, versuche es doch mal mit
Delphi-Quellcode:
Oder SendMessage...
//Zum anzeigen:
ShowWindow(TNA_Handle, SW_SHOW); //Zum hiden: ShowWindow(TNA_Handle, SW_HIDE); |
Re: Tray Icon eines fremden Programms verbergen/anzeigen
Hi
Mit "ShowWindow(Handle, SW_HIDE)" wird nur das Fenster der Anwendung verborgen, nicht das Tray Icon. Besitzt ein Tray Icon ein eigenes Handle? Gruss |
Re: Tray Icon eines fremden Programms verbergen/anzeigen
hi,
ja, dax meint mit TNA_Handle das handle des icons/forms in der TNA |
Re: Tray Icon eines fremden Programms verbergen/anzeigen
Ok.
Kennt jemand eine möglichkeit an dieses Handle zu kommen? Bzw. sich alle TNA_Handles "aufzulisten"? :gruebel: Gruss |
Re: Tray Icon eines fremden Programms verbergen/anzeigen
hi,
FindWindow() (s. W32 API) |
Re: Tray Icon eines fremden Programms verbergen/anzeigen
Moin
Die Funktion kenne ich, ich benutze sie um das Hauptfenster der Anwendung zu ermitteln. Ich müsste eigentlich nur den Klassennamen eines TNAs kennen, dan könnte ich mir alle Tray Icons mit "EnumWindows()" auflisten, oder? |
Re: Tray Icon eines fremden Programms verbergen/anzeigen
hi,
yo *g* also so bekommst du schonmal die TNA
Delphi-Quellcode:
trayhwnd := FindWindowEx(0, 0, 'Shell_TrayWnd', nil);
if (trayhwnd = 0) then exit; trayhwnd := FindWindowEx(trayhwnd, 0, 'TrayNotifyWnd', nil); if (trayhwnd = 0) then exit; |
Re: Tray Icon eines fremden Programms verbergen/anzeigen
Das Programm "Inspect" aus dem PSDK (bin-Ordner) sagt mir, dass der Klassenname "TrayNotifyWnd" lautet. Der von der Uhr übrigens "TrayClockWClass". So einfach ist das Thema aber nicht. Ich meine mich an einen Beitrag zu erinnern (entweder hier oder im DF?), in dem die Icons u.a. (!) mit ReadProcessMemory usw. ermittelt wurden. Das klappt aber nur ansatzweise und IMHO auch nicht unter jedem Windows.
Die Frage ist jetzt: Wo war das? Dann kann man danach suchen. |
Re: Tray Icon eines fremden Programms verbergen/anzeigen
Hab mir einige Beispiele zu ReadProcessMemory bzw. WriteProcessMemory angeschaut.
Die sache ist mir jedoch zu heikel (Direkt in den Speicher zu schreiben), ausserdem wüsste ich nicht genau wie :cry:. Naja, wird wohl nix draus werden, aber thx für die Tips :thuimb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:55 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 by Thomas Breitkreuz