1 |
joko |
1.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 |
joko |
1.2 |
hwnd As Long |
17 |
joko |
1.1 |
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 |
joko |
1.2 |
Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long |
52 |
|
|
Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long |
53 |
joko |
1.1 |
|
54 |
|
|
Public Sub ShowTrayIcon(MainForm As Form, Caption As String) |
55 |
|
|
' Symbol der Anwendung zum SysTray hinzufügen |
56 |
|
|
With nid |
57 |
|
|
.cbSize = Len(nid) |
58 |
joko |
1.2 |
.hwnd = MainForm.hwnd |
59 |
joko |
1.1 |
.uId = vbNull |
60 |
|
|
.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE |
61 |
|
|
.uCallBackMessage = WM_MOUSEMOVE |
62 |
|
|
.hIcon = MainForm.Icon |
63 |
|
|
'.szTip = MainForm.Caption & vbNullChar |
64 |
|
|
.szTip = Caption & vbNullChar |
65 |
|
|
End With |
66 |
|
|
Shell_NotifyIcon NIM_ADD, nid |
67 |
|
|
|
68 |
|
|
' Anwendung jetzt "verstecken" |
69 |
|
|
MainForm.Hide |
70 |
joko |
1.2 |
'MainForm.WindowState = vbMinimized |
71 |
|
|
|
72 |
joko |
1.1 |
End Sub |
73 |
|
|
|
74 |
|
|
Public Sub RemoveTrayIcon() |
75 |
|
|
' Symbol aus dem Systray entfernen, |
76 |
|
|
' wenn das Programm beended wird |
77 |
|
|
Shell_NotifyIcon NIM_DELETE, nid |
78 |
|
|
End Sub |
79 |
|
|
|
80 |
|
|
Public Sub UpdateTrayIcon(TipText As String) |
81 |
|
|
With nid |
82 |
|
|
.szTip = TipText & vbNullChar |
83 |
|
|
End With |
84 |
|
|
Shell_NotifyIcon NIM_MODIFY, nid |
85 |
|
|
End Sub |