2011-03-29 76 views
1

我正在尋找一種方法來截獲ShowDesktop事件並將我的窗口設置在前面。 有沒有辦法做到這一點,而不使用API​​鉤子? 謝謝, 奧馬爾。如何攔截「顯示桌面」事件?

+7

請不要這樣做。你不擁有電腦,你的程序的用戶。如果他們不想看到你的節目,那是他們的選擇。 – 2011-03-29 19:42:54

+8

我希望不是。你爲什麼想這樣做? – Mat 2011-03-29 19:43:09

+5

聽起來像一個完全可怕的想法。 – 2011-03-29 19:43:10

回答

4

如果您正在編寫Windows任務欄樣式碼頭,那麼只需確保您的窗口已設置爲WS_EX_TOPMOST,並且「顯示桌面」將使其保持獨立。或者,使用SetWindowPos使它已經創建後的最頂層窗口,例如:

SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE); 

更新:您需要使用Windows應用程序欄API做一個「碼頭」風格的應用程序。有關更多詳細信息,請參閱here

應用程序欄也需要從Alt + Tab等顯示的頂層列表中刪除,這可以通過添加WS_EX_TOOLWINDOW和刪除WS_EX_APPWINDOW來完成。

我應該早點說清楚,道歉。

+0

聽起來不錯,但不起作用。 – 2011-03-29 20:22:18

+0

適用於使用Windows AppBar API的任務欄式應用程序。 – Rob 2011-03-29 20:27:17

+0

我從空的Win32項目開始。不知道爲什麼這不起作用。 – 2011-03-29 20:32:23