检测全屏运行的窗口

时间:2012-12-18 05:05:48

标签: c# flash winapi hook fullscreen

我目前有一个赞美Flash游戏的程序。其中一个功能是“始终保持最佳状态”,这一功能非常有效,直到游戏进入全屏模式。当闪光灯进入全屏模式时,Windows任务栏消失,因此闪光灯窗口可以传播整个屏幕。我的程序保持最佳状态,但无论何时焦点从全屏闪存窗口移动到我的程序,都会出现Windows任务栏。

通常,我只是在调用FindWindow("Shell_TrayWnd", "");然后ShowWindow(_taskbarHandle, 0);时隐藏任务栏。这有效但我希望当闪存窗口不是全屏模式并且我的程序被聚焦时,任务栏会显示。我曾想过尝试获取窗口的句柄,但是使用不同的浏览器会出现不同的类名。

有没有人或者可以想到一种可靠的方法来确定闪存窗口是否全屏运行?

我想过每隔几秒轮询一次GetActiveWindow以获取当前活动的窗口句柄,但我仍然无法确定它是否是一个闪存窗口!

有没有办法迭代所有打开的窗口,看看是否有一个屏幕的宽度和高度?

1 个答案:

答案 0 :(得分:0)

您可以使用EnumWindows函数迭代打开的窗口。 或者,您可以使用WindowFromPoint来确定是否有一个窗口位于0,0和X-1,Y-1(其中X和Y是屏幕的宽度和高度),如果是,如果它们是'在同一个窗口。

您可以尝试的另一件事,我不知道这是否有效,是为您的自定义窗口使用WS_EX_TOOLWINDOW扩展窗口样式。这将阻止您的窗口出现在任务栏上,这样做可能会阻止任务栏首先出现在前面。