2011-03-29 53 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