先创建一模块放一写公共代码
具体代码如下:
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
具体代码如下:
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
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货