Option Explicit
Private Const APP_SYSTRAY_ID = 999
Private Const NOTIFYICON_VERSION = &H3
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4
Private Const NIF_STATE = &H8
Private Const NIF_INFO = &H10
Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2
Private Const NIM_SETFOCUS = &H3
Private Const NIM_SETVERSION = &H4
Private Const NIM_VERSION = &H5
Private Const NIS_HIDDEN = &H1
Private Const NIS_SHAREDICON = &H2
icone
Private Const NIIF_NONE = &H0
Private Const NIIF_INFO = &H1
Private Const NIIF_WARNING = &H2
Private Const NIIF_ERROR = &H3
Private Const NIIF_GUID = &H5
Private Const NIIF_ICON_MASK = &HF
Private Const NIIF_NOSOUND = &H10
Private Const WM_USER = &H400
Private Const NIN_BALLOONSHOW = (WM_USER + 2)
Private Const NIN_BALLOONHIDE = (WM_USER + 3)
Private Const NIN_BALLOONTIMEOUT = (WM_USER + 4)
Private Const NIN_BALLOONUSERCLICK = (WM_USER + 5)
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(7) As Byte
End Type
Private Type NOTIFYICONDATA
cbSize As Long
hWnd As Long
uID As Long
uFlags As Long
uCallbackMessage As Long
hIcon As Long
szTip As String * 128
dwState As Long
dwStateMask As Long
szInfo As String * 256
uTimeoutAndVersion As Long
szInfoTitle As String * 64
dwInfoFlags As Long
guidItem As GUID
End Type
Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
Private Sub Form_Unload(Cancel As Integer)
ShellTrayRemove
End Sub
Private Sub Command1_Click()
Call ShellTrayAdd
Command2.Enabled = True
End Sub
Private Sub Command2_Click()
ShellTrayModifyTip GetSelectedOptionIndex()
End Sub
Private Sub ShellTrayAdd()
Dim nid As NOTIFYICONDATA
With nid
.cbSize = Len(nid)
.hWnd = Form1.hWnd
.uID = APP_SYSTRAY_ID
.uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP
.dwState = NIS_SHAREDICON
.hIcon = Form1.Icon
.szTip = "Visualizza il Balloon Tip!" & Chr(0)
.uTimeoutAndVersion = NOTIFYICON_VERSION
End With
Call Shell_NotifyIcon(NIM_ADD, nid)
Call Shell_NotifyIcon(NIM_SETVERSION, nid)
End Sub
Private Sub ShellTrayRemove()
Dim nid As NOTIFYICONDATA
With nid
.cbSize = Len(nid)
.hWnd = Form1.hWnd
.uID = APP_SYSTRAY_ID
End With
Call Shell_NotifyIcon(NIM_DELETE, nid)
End Sub
Private Sub ShellTrayModifyTip(nIconIndex As Long)
Dim nid As NOTIFYICONDATA
With nid
.cbSize = Len(nid)
.hWnd = Form1.hWnd
.uID = APP_SYSTRAY_ID
.uFlags = NIF_INFO
.dwInfoFlags = nIconIndex
.szInfoTitle = "Visualizza il Balloon Tip!" & Chr(0)
.szInfo = Text1.Text
End With
Call Shell_NotifyIcon(NIM_MODIFY, nid)
End Sub
Private Function GetSelectedOptionIndex() As Long
GetSelectedOptionIndex = Option1(0).Value * 0 Or _
Option1(1).Value * -1 Or _
Option1(2).Value * -2 Or _
Option1(3).Value * -3
End Function