清除任务栏右下角无效图标

2014-11-24 02:24:23 · 作者: · 浏览: 7

进程异常退出时,右下角会残留无效图标,只有鼠标移动上去的时候才会消失。  
在网上,找了一些方法。  
1.Shell_NotifyIcon 行不通。  
2.个人觉得模拟鼠标点击的方法不太靠谱,莫名其妙鼠标指针跑过去了。  
3.最后综合网上几种方法,下面这个模拟发送鼠标移动的方法还是挺靠谱的,但是找找准窗口发消息。  
 

HWND GetSysTrayWnd()  
{  
  
    HWND hwnd ;  
    hwnd = ::FindWindow("Shell_TrayWnd", NULL ) ;  
  
    hwnd = ::FindWindowEx(hwnd, 0, "TrayNotifyWnd", NULL );  
    hwnd = FindWindowEx(hwnd, 0, "SysPager", NULL);  
    hwnd = FindWindowEx(hwnd, 0, "ToolbarWindow32", NULL);  
    return hwnd ;  
}  
  
BOOL UpdateToolbarWndIcon()  
{  
    HWND hWnd = GetSysTrayWnd()  ;  
    if(hWnd)  
    {  
        CRect rcNotify;  
        int x = 0, y = 0;  
        ::GetWindowRect(hWnd , &rcNotify ) ;  
        for( x = 1 ; x < rcNotify.right - rcNotify.left - 1  ; x += 8  )  
        {  
            for( y = 1 ; y < rcNotify.bottom - rcNotify.top - 1 ; y += 8  )  
            {  
                ::SendMessage(hWnd, WM_MOUSEMOVE, 0, MAKELPARAM(x,y));  
            }  
        }  
        return TRUE;  
    }     
    else  
    {  
        return FALSE;  
    }  
      
}