先创建一模块放一写公共代码
具体代码如下:
Option Explicit
Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_RBUTTONUP = &H205
Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIF_MESSAGE = &H1
Public Const NIM_DELETE = &H2
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4
Public Const WM_MOUSEMOVE = &H200
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 TrayIcon As NOTIFYICONDATA再在窗体内写三个过程 一个用来显示图标,一个用来更换图标,一个用来移除图标
sub ShowIconToTray()
    TrayIcon.cbSize = Len(TrayIcon)
    TrayIcon.hwnd = Me.hwnd
    TrayIcon.uId = vbNull
    TrayIcon.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
    TrayIcon.ucallbackMessage = WM_MOUSEMOVE
    TrayIcon.hIcon = img1.Picture
    TrayIcon.szTip = "托盘示例" & Chr$(0)
    Call Shell_NotifyIcon(NIM_ADD, TrayIcon)
end subsub ChangeIcon()
    TrayIcon.hIcon = img2.Picture'新的图画或图标
    Call Shell_NotifyIcon(NIM_MODIFY, TrayIcon)
end subsub DelIcon()
    Call Shell_NotifyIcon(NIM_DELETE, TrayIcon)
end sub托盘中图标响应鼠标事件的代码:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
On Error GoTo err
Static Message As Long
Static RR As Boolean
    
    'x is the current mouse location along the x-axis
    Message = x / Screen.TwipsPerPixelX
    
    If RR = False Then
        RR = True
        Select Case Message
            ' Left double click (This should bring up a dialog box)
          
            Case WM_RBUTTONUP
                 msgbox "鼠标右键按下"
            Case WM_LBUTTONDBLCLK
                 msgbox "鼠标左键双击"
            '其他的鼠标事件自己添加判断就好了。
        End Select
        RR = False
    End If
err:
End Sub