1. 获取已运行程序的Window Handle (HWND) 2. 由于一个HWND可以有多个Systray ICON, 所以只能用循环来依次将它们删除。Option ExplicitPrivate 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 TypePrivate Const NIM_DELETE = &H2Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean Dim TrayI As NOTIFYICONDATAPrivate Sub Form_Load() Dim i As Long For i = 1 To 100000 '这个值可能需要更大一些 TrayI.cbSize = Len(TrayI) TrayI.hWnd = &H10122 '这个&H10122是那个已运行程序的HWND TrayI.uId = i Shell_NotifyIcon NIM_DELETE, TrayI Next i End Sub
2. 由于一个HWND可以有多个Systray ICON, 所以只能用循环来依次将它们删除。Option ExplicitPrivate 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 TypePrivate Const NIM_DELETE = &H2Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Dim TrayI As NOTIFYICONDATAPrivate Sub Form_Load()
Dim i As Long
For i = 1 To 100000 '这个值可能需要更大一些
TrayI.cbSize = Len(TrayI)
TrayI.hWnd = &H10122 '这个&H10122是那个已运行程序的HWND
TrayI.uId = i
Shell_NotifyIcon NIM_DELETE, TrayI
Next i
End Sub