vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: System/Windows · Sonstiges   |   VB-Versionen: VB4, VB5, VB607.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 ImhofBewertung:  Views:  48.467 
ohne HomepageSystem:  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...
 



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.