1 |
Attribute VB_Name = "TrayIcon" |
2 |
' from: http://www.microsoft.com/msj/archive/S6BB.aspx |
3 |
|
4 |
Option Explicit |
5 |
|
6 |
' alle benötigten API-Deklarationen |
7 |
Public Declare Sub keybd_event Lib "user32" _ |
8 |
(ByVal bVk As Byte, ByVal bScan As Byte, _ |
9 |
ByVal dwFlags As Long, ByVal dwExtraInfo As Long) |
10 |
|
11 |
Public Const KEYEVENTF_KEYUP = &H2 |
12 |
Public Const VK_LWIN = &H5B |
13 |
|
14 |
Public Type NOTIFYICONDATA |
15 |
cbSize As Long |
16 |
hWnd As Long |
17 |
uId As Long |
18 |
uFlags As Long |
19 |
uCallBackMessage As Long |
20 |
hIcon As Long |
21 |
szTip As String * 64 |
22 |
End Type |
23 |
|
24 |
Public Const NIM_ADD = &H0 |
25 |
Public Const NIM_MODIFY = &H1 |
26 |
Public Const NIM_DELETE = &H2 |
27 |
|
28 |
Public Const NIF_MESSAGE = &H1 |
29 |
Public Const NIF_ICON = &H2 |
30 |
Public Const NIF_TIP = &H4 |
31 |
|
32 |
Public Const WM_MOUSEMOVE = &H200 |
33 |
|
34 |
' Konstanten für linke Maustaste |
35 |
Public Const WM_LBUTTONDBLCLK = &H203 ' Doppelklick |
36 |
Public Const WM_LBUTTONDOWN = &H201 ' Maus gedrückt |
37 |
Public Const WM_LBUTTONUP = &H202 ' Maus losgelassen |
38 |
|
39 |
' Konstanten für rechte Maustaste |
40 |
Public Const WM_RBUTTONDBLCLK = &H206 ' Doppelklick |
41 |
Public Const WM_RBUTTONDOWN = &H204 ' Maus gedrückt |
42 |
Public Const WM_RBUTTONUP = &H205 ' Maus losgelassen |
43 |
|
44 |
Public Declare Function Shell_NotifyIcon Lib _ |
45 |
"shell32" Alias "Shell_NotifyIconA" ( _ |
46 |
ByVal dwMessage As Long, _ |
47 |
pnid As NOTIFYICONDATA) As Boolean |
48 |
|
49 |
Public nid As NOTIFYICONDATA |
50 |
|
51 |
|
52 |
|
53 |
Public Sub ShowTrayIcon(MainForm As Form, Caption As String) |
54 |
' Symbol der Anwendung zum SysTray hinzufügen |
55 |
With nid |
56 |
.cbSize = Len(nid) |
57 |
.hWnd = MainForm.hWnd |
58 |
.uId = vbNull |
59 |
.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE |
60 |
.uCallBackMessage = WM_MOUSEMOVE |
61 |
.hIcon = MainForm.Icon |
62 |
'.szTip = MainForm.Caption & vbNullChar |
63 |
.szTip = Caption & vbNullChar |
64 |
End With |
65 |
Shell_NotifyIcon NIM_ADD, nid |
66 |
|
67 |
' Anwendung jetzt "verstecken" |
68 |
MainForm.Hide |
69 |
End Sub |
70 |
|
71 |
Public Sub RemoveTrayIcon() |
72 |
' Symbol aus dem Systray entfernen, |
73 |
' wenn das Programm beended wird |
74 |
Shell_NotifyIcon NIM_DELETE, nid |
75 |
End Sub |
76 |
|
77 |
Public Sub UpdateTrayIcon(TipText As String) |
78 |
With nid |
79 |
.szTip = TipText & vbNullChar |
80 |
End With |
81 |
Shell_NotifyIcon NIM_MODIFY, nid |
82 |
End Sub |