Zum vorherigen AbschnittZum nächsten Abschnitt Icon im SysTray einrichten
Oft laufen Programme nur im Hintergrund und überwachen etwas oder sollen ständig einsatzbereit sein. Dann bietet es sich an, ein kleines Icon links neben der Uhr in der Taskleiste zu plazieren. Mit beispielsweise einem Rechtsklick ließe sich dann ein kleines Kontextmenü öffnen, oder ein Doppelklick würde das Programm in den Vordergrund treten lassen. Erfahren Sie im Folgenden, wie Sie Ihr eigenes Icon im SysTray einrichten können.
Ihre Bewertung:
 12345
    

Bewertung dieses Tipps:  (bewertet von insgesamt 67 Besuchern)

 Zum vorherigen AbschnittZum nächsten Abschnitt Deklarationen
Erstmal benötigen wir eine API-Funktion und ein paar Konstanten. Die Deklaration findet in einem Modul statt:

DefInt A-Z
Global Const NIM_ADD = &H0&
Global Const NIM_MODIFY = &H1
Global Const NIM_DELETE = &H2
Global Const NIF_MESSAGE = &H1
Global Const NIF_ICON = &H2
Global Const NIF_TIP = &H4

Global Const WM_MOUSEMOVE = &H200
Global NI As NOTIFYICONDATA

Type NOTIFYICONDATA
   cbSize As Long
   hWnd As Long
   uID As Long
   uFlags As Long
   uCallbackMessage As Long
   hIcon As Long
   szTip As String * 64
End Type

Declare Function Shell_NotifyIconA Lib "SHELL32" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long

 Zum vorherigen AbschnittZum nächsten Abschnitt Aufruf
Doch damit das Icon auch wirklich angezeigt wird, muss erst noch die API-Funktion mit den richtigen Parametern aufgerufen werden. Plazieren Sie den folgenden Codeteil am Besten im Form_Load-Ereignis Ihrer Startform oder im Sub Main. Erläuterungen zu den farblich markierten Elementen finden Sie weiter unten:

NI.cbSize = Len(NI)
NI.hWnd = PictureBox.hWnd
NI.uID = 0
NI.uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP
NI.uCallbackMessage = WM_MOUSEMOVE
NI.hIcon = PictureBox.DragIcon
NI.szTip = "Beispieltext" + Chr$(0)
Do
   NI.uID = NI.uID + 1
   Result = Shell_NotifyIconA(NIM_ADD, NI)
Loop While Result = 0

PictureBox   =
Setzen Sie hier bitte den Namen einer PictureBox ein. Das DragIcon dieser PictureBox enthält das Icon, das später im SysTray zu sehen sein wird. Dieses Symbol darf jedoch nur 16 Farben haben. Desweiteren wird diese PictureBox als Eventhandler benutzt. Dazu mehr im nächsten Abschnitt.
Beispieltext =
Setzen Sie für hier bitte den ToolTipText des Icons ein. Dieser erscheint bei längerem Warten mit dem Mauscursor auf dem Icon.

Denken Sie daran, folgenden Code aufzurufen, wenn das Programm beendet wird (am Besten also im Ereignis "Form_Unload"), da sonst das Icon im SysTray bleibt:

Call Shell_NotifyIconA(NIM_DELETE, NI)

 Zum vorherigen AbschnittZum nächsten Abschnitt Eventhandler
Das Icon ist nun sichtbar, doch wie kann mit ihm interagieren? Dazu wäre eine Routine gut, die man schon von anderen Steuerelementen wie dem CommandButton kennt. Kein Problem, fügen Sie einfach folgenden Code in das Ereignis "PictureBox_MouseMove ein, wobei "PictureBox" wieder durch den Namen der verwendeten PictureBox zu ersetzen ist:

Dim Msg As Long
Msg = (X And &HFF) * &H100
Select Case Msg
   Case 0 'Mausbewegung auf Icon
      '...
   Case &HF00 'Linksklick
      '...
   Case &H1E00 'linke Maustaste losgelassen
      '...
   Case &H2D00 'Doppelklick links
      '...
   Case &H3C00 'Rechtsklick
      '...
   Case &H4B00 'rechte Maustaste losgelassen
      '...
   Case &H5A00 'Doppelklick rechts
      '...
End Select

 Zum vorherigen AbschnittZum nächsten Abschnitt Projektdownload
Da hier vielleicht alles etwas kompliziert und schlecht nachvollziehbar erscheint, können Sie sich das Ganze auch nochmal als Projekt für Vb6 herunterladen:
 Beispielprojekt



Quellen: SHADOWare.de
©2000 by SHADOWare, Thomas Bachem