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)