我的意思是,把别人已经运行了的程序出现在系统托盘里图标隐藏,程序当然还是运行着的。

解决方案 »

  1.   

    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