vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: System/Windows · Sonstiges   |   VB-Versionen: VB4, VB5, VB612.05.02
Anzeigen der Anwendung im System Tray

Dieses Beispiel zeigt, wie sich eine Anwendung im System-Tray der Taskbar anzeigen lässt - ohne zusätzliche PictureBox.

Autor:   MephistoBewertung:     [ Jetzt bewerten ]Views:  72.158 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Wollten Sie schon immer Ihre Anwendung im SysTray haben, um z.B. bei einem Rechtsklick ein Popup-Menü erscheinen zu lassen, etc.? Mit folgendem Quellcode können Sie das schnell und einfach bewerkstaelligen. Der Code wird das Icon Ihrer Anwendung im System-Tray der Taskbar links neben der Uhrzeit-Anzeige anzeigen. Klickt der Anwender nun auf das Symbol, wird ein Ereignis ausgelöst, in welchem Sie die Maustaste abfragen, um so entsprechend reagieren zu können.

Ja, ja, wir hatten ja schon einmal solch einen Code im Archiv. Korrekt! Aber dieser Code unterscheidet sich von dem bereits bekannten Tipp ( Icon Ihrer Anwendung im SystemTray) dadurch, dass man keine extra Picture-Box mit einem Symbol zur Verfuegung stellen muss.

Hier der Code:

Erstellen Sie ein neues Modul mit nachfolgenden Deklarationen.

Option Explicit
 
' alle benötigten API-Deklarationen
Public Declare Sub keybd_event Lib "user32" ( _
  ByVal bVk As Byte, _
  ByVal bScan As Byte, _
  ByVal dwFlags As Long, _
  ByVal dwExtraInfo As Long)
 
Public Const KEYEVENTF_KEYUP = &H2
Public Const VK_LWIN = &H5B
 
Public 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
 
Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIM_DELETE = &H2
 
Public Const NIF_MESSAGE = &H1
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4
 
Public Const WM_MOUSEMOVE = &H200
 
' Konstanten für linke Maustaste
Public Const WM_LBUTTONDBLCLK = &H203   ' Doppelklick
Public Const WM_LBUTTONDOWN = &H201     ' Maus gedrückt
Public Const WM_LBUTTONUP = &H202       ' Maus losgelassen
 
' Konstanten für rechte Maustaste
Public Const WM_RBUTTONDBLCLK = &H206   ' Doppelklick
Public Const WM_RBUTTONDOWN = &H204     ' Maus gedrückt
Public Const WM_RBUTTONUP = &H205       ' Maus losgelassen
 
Public Declare Function Shell_NotifyIcon Lib "shell32" _
  Alias "Shell_NotifyIconA" ( _
  ByVal dwMessage As Long, _
  pnid As NOTIFYICONDATA) As Boolean
 
Public nid As NOTIFYICONDATA

Beispiel
Plazieren Sie auf die Form einen CommandButton und nennen diesen cmdHide. Aktivieren Sie den Menü-Editor und erstellen ein unsichtbares PopUp-Menü (MenuPopUp) mit zwei Menü-Einträgen: Wiederherstellen (mnuPopUp(0)) und Beenden (mnuPopUp(1)).

Beim Klicken auf die Schaltfläche wird Anwendung ausgeblendet und im System-Tray angezeigt:

Private Sub cmdHide_Click()
  ' Symbol der Anwendung zum SysTray hinzufügen
  With nid
    .cbSize = Len(nid)
    .hWnd = Me.hWnd
    .uId = vbNull
    .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
    .uCallBackMessage = WM_MOUSEMOVE
    .hIcon = Me.Icon
    .szTip = Me.Caption & vbNullChar
  End With
  Shell_NotifyIcon NIM_ADD, nid
 
  ' Anwendung jetzt "verstecken"
  Me.Hide
End Sub

Alle Maus-Ereignisse werden nun an die Form weitergeleitet und können im Form_MouseMove-Ereignis abgefragt werden:

Private Sub Form_MouseMove(Button As Integer, _
  Shift As Integer, X As Single, Y As Single)
 
  ' Das MouseMove Ereignis wird ausgelöst, wenn die
  ' Maus über das Symbol im Systray geführt wird
 
  Dim lMsg As Long
  Dim sFilter As String
 
  lMsg = X / Screen.TwipsPerPixelX
  Select Case lMsg
     Case WM_LBUTTONDOWN
      ' linke Maustaste wird gedrückt
 
     Case WM_LBUTTONUP
      ' linke Maustaste wird losgelassen
 
     Case WM_LBUTTONDBLCLK
      ' linke Maustaste - Doppelklick
 
     Case WM_RBUTTONDOWN
      ' rechte Maustaste wird gedrückt
 
     Case WM_RBUTTONUP
       ' rechte Maustaste wird losgelassen
       ' (jetzt z.B. Popup-Menü öffnen)
       PopupMenu MenuPopUp
 
     Case WM_RBUTTONDBLCLK
      ' rechte Maustaste - Doppeklick
 
  End Select
End Sub

Beim Klicken auf einen Menü-Eintrag aus dem PopUp-Menü muss der entsprechende Code ausgeführt werden:

Private Sub mnuPopUp_Click(Index As Integer)
  ' Symbol aus dem Systray entfernen
  Shell_NotifyIcon NIM_DELETE, nid
 
  Select Case Index
    Case 0
      ' Wiederherstellen
      Me.Show
 
    Case 1
      ' Beenden
      End
  End Select
End Sub

Wird das Programm beendet, muss noch das Icon aus dem System-Tray entfernt (falls dort noch vorhanden):

Private Sub Form_Unload(Cancel As Integer)
  ' Symbol aus dem Systray entfernen,
  ' wenn das Programm beended wird
  Shell_NotifyIcon NIM_DELETE, nid
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...
 

Dieser Tipp wurde bereits 72.158 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Aktuelle Diskussion anzeigen (1 Beitrag)

nach obenzurück


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.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel