En un módulo .bas poné esto:
Option Explicit
Option Base 1
Public Enum eSystemTray
LeftButtonDown
LeftButtonUp
LeftButtonDoubleClick
RightButtonDown
RightButtonUp
RightButtonDoubleClick
MouseMove
End Enum
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 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 Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Public nid As NOTIFYICONDATA
Public Sub CrearSystemTrayIcon(ByRef fMain As Form, ByVal ai_sToolTipText As String)
With nid
.cbSize = Len(nid)
.hwnd = fMain.hwnd
.uId = vbNull
.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
.uCallBackMessage = WM_MOUSEMOVE
.hIcon = fMain.Icon
.szTip = ai_sToolTipText & vbNullChar
End With
Shell_NotifyIcon NIM_ADD, nid
End Sub
Public Sub ModificarSystemTrayIcon(Optional ByRef fMain As Form, Optional ByVal ai_lhIcon As Long, Optional ByVal ai_sToolTipText As String)
With nid
.cbSize = Len(nid)
If Not fMain Is Nothing Then .hwnd = fMain.hwnd
.uId = vbNull
.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
.uCallBackMessage = WM_MOUSEMOVE
If Not ai_lhIcon = 0 Then .hIcon = ai_lhIcon
If Not ai_sToolTipText = "" Then .szTip = ai_sToolTipText & vbNullChar
End With
Shell_NotifyIcon NIM_MODIFY, nid
End Sub
Public Sub EliminarSystemTrayIcon()
Shell_NotifyIcon NIM_DELETE, nid
End Sub
Public Function CapturarAccionesSystemTray(ByRef fMain As Form, ByVal ai_lX As Long) As eSystemTray
Dim msg As Long
If fMain.ScaleMode = vbPixels Then
msg = ai_lX
Else
msg = ai_lX / Screen.TwipsPerPixelX
End If
Select Case msg
Case WM_LBUTTONDOWN
CapturarAccionesSystemTray = LeftButtonDown
Case WM_LBUTTONUP
CapturarAccionesSystemTray = LeftButtonUp
Case WM_LBUTTONDBLCLK
CapturarAccionesSystemTray = LeftButtonDoubleClick
Case WM_RBUTTONDOWN
CapturarAccionesSystemTray = RightButtonDown
Case WM_RBUTTONUP
CapturarAccionesSystemTray = RightButtonUp
Case WM_RBUTTONDBLCLK
CapturarAccionesSystemTray = RightButtonDoubleClick
Case WM_MOUSEMOVE
CapturarAccionesSystemTray = MouseMove
End Select
End Function
y en el formulario principal esto otro:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim eResultado As eSystemTray
eResultado = CapturarAccionesSystemTray(Me, X)
Select Case eResultado
Case RightButtonDown
'Acá podrías poner, por ejemplo que te aprezca un menu contextual
'Tipo el del messenger
Case LeftButtonDoubleClick
Me.Show
End Select
End Sub
espero que te sirva!!!!