|
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
|
|
|
|
|
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: [ 2884 ]
|
|
|