| 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 |
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 |
|
| 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 |
.hwnd = MainForm.hwnd |
| 59 |
.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 |
'MainForm.WindowState = vbMinimized |
| 71 |
|
| 72 |
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 |