Tipp 0305 Animiertes Icon im SystemTray
Autor/Einsender:
Datum:
  Markus Schutz
19.01.2003
Entwicklungsumgebung:   VB 5
Dieser Tipp ermöglicht es im SystemTray (unten rechts in der Taskleiste) ein Icon zu erstellen.
Auf Knopfdruck wird mittels der API-Funktion Shell_NotifyIcon ein Icon im SystemTray erstellt. Dabei wird ein Timer in Gang gesetzt, der alle 0,2 Sekunden das Bild austauscht. Quelle ist dabei eine ImageList, in der alle Bilder abgelegt sind. Klickt man mit der linken Maustaste auf das Icon, so wird der Bildindex (gibt die Nummer des aktuellen Bildes an) wieder zurückgesetzt (hier -1). Des weiteren wird der Timer deaktiviert, das TrayIcon zerstört und die Form wieder angezeigt. Klickt man mit der rechten Maustaste auf das Icon, so wird es zerstört und das Programm beendet.
Code im Codebereich des Moduls
 
Option Explicit

Public Declare Function Shell_NotifyIcon Lib "shell32" Alias _
        "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As _
        NOTIFYICONDATA) As Boolean

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 TIcon As NOTIFYICONDATA
 
Code im Codebereich der Form
 
Option Explicit

Dim BildIndex As Integer
Dim Aufbau As Boolean
Dim Shell_NI As Boolean

Private Sub Form_Load()
  BildIndex = -1
  Aufbau = True
End Sub

Private Sub cmdSysTray_Click()
  If tmrBild.Enabled = False Then tmrBild.Enabled = True
  Me.Hide

  TIcon.cbSize = Len(TIcon)
  TIcon.hWnd = picIcon.hWnd
  TIcon.uId = 1&
  TIcon.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
  TIcon.ucallbackMessage = WM_MOUSEMOVE
  TIcon.hIcon = picIcon.Picture

  Shell_NotifyIcon NIM_ADD, TIcon
  Shell_NI = True
End Sub

Private Sub PicIcon_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
      Call LeftClickEvent
    Case WM_RBUTTONUP
      Unload Me
  End Select
End Sub

Private Sub tmrBild_Timer()
  If BildIndex = 9 Then BildIndex = -1
  BildIndex = BildIndex + 1

  If Shell_NI Then
    picIcon.Picture = _
          imgLstIcons.ListImages.Item(BildIndex + 1).Picture
    TIcon.hIcon = picIcon.Picture
    Shell_NotifyIcon NIM_MODIFY, TIcon
  End If
End Sub

Private Sub LeftClickEvent()
  picIcon.Picture = imgLstIcons.ListImages.Item(1).Picture
  TIcon.hIcon = picIcon.Picture
  Shell_NotifyIcon NIM_MODIFY, TIcon
  Shell_NotifyIcon NIM_DELETE, TIcon
  tmrBild.Enabled = False
  BildIndex = -1
  Shell_NI = False
  Me.Show
End Sub

Private Sub Form_Unload(Cancel As Integer)
  Shell_NotifyIcon NIM_DELETE, TIcon
  Set frmAniSys = Nothing
End Sub
 
Weitere Links zum Thema
Anwendung als Icon im SystemTray

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,9 kB) Downloads bisher: [ 2874 ]

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: Sonntag, 14. August 2011