Tipp 0195 Anwendung als Icon im SystemTray
Autor/Einsender:
Datum:
  Ronald Janowski
18.08.2005 (Update)
Entwicklungsumgebung:   VB 5
Wer kennt sie nicht, die kleinen Symbole unten rechts in der Taskleiste. Um ein Programm dort in diesem Bereich, dem SystemTray, als Symbol zu platzieren, bedienen wir uns der API-Funktion Shell_NotifyIcon.
Neben dem Anzeigen eines PopUp-Menüs, dem Erkennen von Klick, Doppelklick, der Unterscheidung zwischen der linken und rechten Maustaste ist auch ein MouseMove-Ereignis erfolgt auch die Anzeige eines Tool-Tipps.
Code im Codebereich des Moduls
 
Option Explicit

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
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_RBUTTONDBLCLK = &H206

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 Declare Function Shell_NotifyIcon Lib "shell32" Alias _
       "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As _
       NOTIFYICONDATA) As Boolean

Public Declare Function SetForegroundWindow Lib "user32.dll" ( _
       ByVal hwnd As Long) As Long

Public TIcon As NOTIFYICONDATA
 
Code im Codebereich der Form
 
Option Explicit

Private Sub cmdSysTray_Click()
  Me.Hide

  With TIcon
    .cbSize = Len(TIcon)
    .hWnd = Picture1.hWnd
    .uId = 1&
    .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
    .ucallbackMessage = WM_MOUSEMOVE
    .hIcon = Picture1.Picture
    .szTip = "Rechte Maustaste für Menü" & vbNullChar
  End With

  Shell_NotifyIcon NIM_ADD, TIcon
End Sub

Private Sub Form_Unload(Cancel As Integer)
  Shell_NotifyIcon NIM_DELETE, TIcon
  Set frmSysTray = Nothing
End Sub

Private Sub Picture1_MouseMove(Button As Integer, _
        Shift As Integer, X As Single, Y As Single)
  Dim Msg As Long

  Msg = X / Screen.TwipsPerPixelX

  Select Case Msg
    Case WM_LBUTTONDOWN
      Me.Show
      Shell_NotifyIcon NIM_DELETE, TIcon
    Case WM_RBUTTONUP
      SetForegroundWindow Me.hwnd
      Me.PopupMenu mnBar
  End Select
End Sub

Private Sub mnBarShowWindow_Click()
  Me.Show
  Shell_NotifyIcon NIM_DELETE, TIcon
End Sub

Private Sub mnBarExit_Click()
  Unload Me
End Sub
 
Weitere Links zum Thema
Animiertes Icon im SystemTray
Taskleiste aus- und einblenden

Windows-Version
95
98/SE
ME
NT
2000
XP
Vista
Win 7
VB-Version
VBA 5
VBA 6
VB 4/16
VB 4/32
VB 5
VB 6


Download  (4,6 kB) Downloads bisher: [ 4405 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Donnerstag, 16. August 2011