Zurück zur Homepage

Icon im Systray neben der Uhr

Ein Beispiel, um ein Icon im Systray neben der Uhr einzublenden, gibt es hier.
Der Code ist nicht so umfangreich, man braucht ein Modul und eine Form. Aber um alles zu durchschauen, muss man sich schon mal die Mappe runterladen, deshalb stelle ich ihn hier nicht als Text vor, sondern umreiße nur kurz die Funktion.

Kurze Erklärung
Man braucht eine User-Form, welche die Messages des Tray-Icons aufnimmt. Diese Form kann man mit einem Klick auf den Command-Button auf eine Position außerhalb des sichtbaren Bereiches bringen. Sie wird nicht versteckt (hide).
Die Win-Proc dieser Form wird umgeleitet, die Messages gehen dann erst an die angegebene Funktion. Deshalb wird ein Funktionszeiger auf die zwischengeschaltete Funktion benötigt.
Ab XL2000 gibt es AddressOf, in XL97 muss er auf anderem Weg ermittelt werden. Getestet ist das Beispiel unter XL97.
Bei anderen Versionen gibt es die vba332.dll nicht, welche die API-Funktionen für den Funktionszeiger liefert. Man kann nun nach einer .dll mit ähnlichen Namen suchen und probieren, oder besser gleich AddressOf benutzen.

.
VorherigeProcAdresse = SetWindowLong(FormHwnd1, GWL_WNDPROC, AddressOf WindowProc) 

Funktionen beim Klick aufs Tray-Icon:
Linke Maus auf Icon, Excel ausblenden. Rechte Maus auf Icon, Excel anzeigen. Doppelklick auf Icon, Form auf Defaultposition bringen.
Beispieldatei (MyNotifyIcon.zip 36 KB)