【问题标题】:Detect window running in fullscreen检测全屏运行的窗口
【发布时间】:2012-12-18 15:10:13
【问题描述】:

我目前有一个补充 Flash 游戏的程序。它的功能之一是“始终保持领先”,并且在游戏进入全屏模式之前效果非常好。当 flash 进入全屏模式时,Windows 任务栏消失,因此 flash 窗口可以传播整个屏幕。我的程序按预期保持在顶部,但只要将焦点从全屏 Flash 窗口移动到我的程序,就会出现 Windows 任务栏。

通常,我会一直隐藏任务栏,然后调用FindWindow("Shell_TrayWnd", ""); 然后ShowWindow(_taskbarHandle, 0);。这可行,但是我希望在 Flash 窗口未处于全屏模式并且我的程序集中时显示任务栏。我曾想过尝试获取窗口的句柄,但不同的浏览器会出现不同的类名。

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

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

有没有办法遍历所有打开的窗口,看看是否有屏幕的宽度和高度?

【问题讨论】:

    标签: c# flash winapi hook fullscreen


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢! EnumWindows 是我一直在寻找的。我假设 WindowFromPoint 是一个导入函数?
    • 我最终混合使用了 EnumWindows 并检查类名和 GetClientRect 以确定它是否处于全屏模式!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    相关资源
    最近更新 更多