我希望能夠從任務欄隱藏另一個應用程序的窗口,而不隱藏窗口本身。具體來說,我希望有幾個不同的Web瀏覽器在Alt + Tab列表中可用,但不佔用任務欄上的空間。如果有人想知道爲什麼:我已經編寫了一個儀表板應用程序,它使用Vista的DwmRegisterThumbnail API來一次顯示多個窗口的實時預覽 - 一種「畫中畫」,如果你願意的話,也有任務欄按鈕的這些窗口似乎是多餘的)。隱藏其他應用程序的任務欄按鈕
我知道,改變其他窗口的風格,包括WS_EX_TOOLWINDOW
將隱藏它從任務欄,我先試了一下。但是,正如預期的那樣,它有一些我不想要的副作用:標題欄變短了(我猜不是所有的都不好),最小化和最大化按鈕消失了(不好)。我還必須隱藏並重新顯示窗口,讓任務欄識別出這種變化,這會導致在我對IE窗口執行重繪工件時發生重繪。
我的下一個想法是,由於默認情況下窗口與所有者都隱藏在任務欄中,也許我可以將其他窗口更改爲我的所有。但MSDN是pretty clear,即「創建一個擁有的窗口,應用程序無法將該窗口的所有權轉移到另一個窗口。」
我發現this question這個問題與我的相似,但它具體關於您自己的流程中的窗口,您可以完全控制窗口所有權。
有誰知道任何其他方式來隱藏任務欄按鈕,這將適用於另一個進程的窗口?
更新: Tormod把我在正確的軌道與ITaskbarList - 它的偉大工程。 pinvoke.net頁面有一些錯誤(錯誤的GUID,按照字母順序而不是以接口順序聲明的方法),但是我編輯了它,進行了更正,並且還添加了一個如何通過其coclass實例化ITaskbarList的示例。
更新2:如果使用DeleteTab隱藏窗口的任務欄按鈕,然後使活動窗口(例如,通過SetForegroundWindow
或Alt + Tab鍵),它的任務欄按鈕將重新出現。要隱藏任務欄按鈕,我必須添加一個計時器並繼續調用DeleteTab。只要您不介意窗口焦點時任務欄按鈕重新出現,這很好。
甜 - 我從來不知道這件事,但聽起來像票。謝謝! – 2009-04-11 14:55:31