Rubrik: System/Windows · Sonstiges | VB-Versionen: VB4, VB5, VB6 | 07.11.00 |
Icon Ihrer Anwendung im SystemTray Das Hinzufügen eines TrayIcons ist im Prinzip ganz einfach. Sie verwenden einfach die Shell_Notifyicon-Funktion. Als paramter übergeben Sie eine Kon... | ||
Autor: Michael Imhof | Bewertung: | Views: 48.467 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Das Hinzufügen eines TrayIcons ist im Prinzip ganz einfach. Sie verwenden einfach die Shell_Notifyicon-Funktion. Als paramter übergeben Sie eine Konstante, die angibt was Sie mit dem Icon machen wollen (hinzufügen/entfernen), und eine Struktur vom Typ NOTIFYICONDATA.
' Deklarationen: Private 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 Private Declare Function Shell_NotifyIcon Lib "shell32.dll" _ Alias "Shell_NotifyIconA" ( _ ByVal dwMessage As Long, _ lpData As NOTIFYICONDATA) As Long ' Konstanten Private Const NIF_ICON = &H2 Private Const NIF_MESSAGE = &H1 Private Const NIF_TIP = &H4 Private Const NIM_ADD = &H0 Private Const NIM_DELETE = &H2 Private Const NIM_MODIFY = &H1
Die Struktur NOTIFYICONDATA muß entsprechend gefüllt werden. Die Felder dieser Struktur sind selbsterklärend, bis auf zwei:
.hwnd:
Gibt das Fenster an, das die Nachrichten des Icons empfangen soll. Wird z.B. auf das Icon geklickt, so sendet Windows eine Nachricht an das hier angegebene Fenster...
.uCallbackMessage:
...und löst das in .uCallbackMessage angegebene Ereignis aus. Gewöhnlich verwendet man hier ein MouseMove-Ereignis z.B. eines Bildfeldes. Was genau mit dem Icon passiert ist (klick/doppelkick) wird im X-Parameter der MouseMove-Prozedur mitgeteilt. Man kann dann darauf reagieren und z.B. ein Menü aufklappen.
Mögliche Ereignisse sind:
1E0F: Linke Maustaste wurde gedrückt
1E1E: linke Maustaste wurde losgelassen
1E2D: Doppelklick linke Maustaste
1E5A: Doppelklick rechte Maustaste
1E3C: rechte Maustaste wurde gedrückt
1E4B: rechte Maustaste wurde losgelassen
1E00: Maus wird über das Icon bewegt
Beispiel:
Plazieren Sie auf einer Form ein Picture-Element mit dem Namen Picture1. Weisen Sie der Picture-Eigenschaft das Icon zu, welches im SystemTray angezeigt werden soll.
Dim IC As NOTIFYICONDATA Private Sub ShowIconInTray() With IC .cbSize = Len(IC) .hwnd = Picture1.hwnd ' Nachrichten-Fenster .uID = 2& ' unveränderlich .uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP .uCallbackMessage = &H200 ' Auswertung in MouseMove .hIcon = Picture1.Picture ' anzuzeigendes Icon .szTip = "Das ist der Tooltip" + vbNullChar End With Shell_NotifyIcon NIM_ADD, IC End Sub Private Sub Picture1_MouseMove(Button As Integer, _ Shift As Integer, X As Single, Y As Single) ' Hier erfolgt die Auswertung Select Case Hex(X) Case "1E3C" ' rechte Maustaste gedrückt Case "1E2D" ' Doppelklick linke Maustaste ... End Select End Sub
Siehe auch: sevTrayIcon ActiveX
Standard-Icon, Flash- oder animierte Icons
Mit dieser Komponente bringen Sie Ihre Anwendung als Icon in den Traybereich der Windows Taskbar (rechts neben der Uhr) - entweder als Standard-Symbol, Flash-Symbol (blinkend) oder auch animiert...
Weiter Infos im Downloadbereich...