1. 程式人生 > >隱藏視窗工作列圖示的三種方法

隱藏視窗工作列圖示的三種方法

本文介紹三種方法,可以實現隱藏視窗在工作列中的圖示。其中前兩種比較坑爹,不建議使用。

轉載:

方法1:

ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW);

為視窗設定WS_EX_TOOLWINDOW屬性。會有以下效果:

1. 視窗圖示不在工作列顯示。

2. 視窗不顯示在Alt+Tab的切換列表中。

3. 在工作管理員的應用程式Tab中不顯示。

方法2:

使用ITaskbarList介面的DeleteTab方法。這個方法在XP下是有問題的,被刪除的工作列圖示,在視窗被啟用時,會再次出現!!再次坑爹!!

BOOL ShowInTaskbar(HWND hWnd, BOOL bShow)
{
    HRESULT hr;
    ITaskbarList* pTaskbarList;
    hr = CoCreateInstance( CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, 
              IID_ITaskbarList, (void**)&pTaskbarList );

    if(SUCCEEDED(hr))
    {
         pTaskbarList->HrInit();
         if(bShow)
               pTaskbarList->AddTab(hWnd);
          else
               pTaskbarList->DeleteTab(hWnd);

         pTaskbarList->Release();
         return TRUE;
    }
 
 return FALSE;
}

方法3:

目前我認為比較妥善的一個辦法。首先建立一個視窗,並將此視窗隱藏。再以此視窗為父視窗建立你的程式視窗,再利用方法2刪除掉工作列中的圖示。

這樣處理之後,工作列中的圖示就不會再死而復生了。

通過Spy++去看QQ的主視窗,它也有一個Caption為空的父視窗,想必也是利用的這個方案吧。