防止全屏应用程序在失去焦点时最小化?

防止全屏应用程序在失去焦点时最小化?

我正在全屏玩一些 Steam 游戏,但它们只使用一个显示器。如果我尝试在第二个显示器上使用浏览器,游戏就会最小化。

是否有可能防止全屏应用程序在失去焦点时最小化?

我正在运行 Windows 7

答案1

一般情况下不会。

游戏尤其依赖于硬件覆盖在全屏模式下进行绘制。此方法具有速度优势,因为游戏可以完全绕过 Windows,直接将帧写入图形输出缓冲区。

当游戏处于窗口模式时,操作系统可以控制输出缓冲区,因此游戏必须通过操作系统的窗口管理器来渲染帧。此过程较慢,因为必须与屏幕上的所有其他窗口共享输出缓冲区。

屏幕上一次只能看到一个输出缓冲区,因此如果您的游戏可以控制它,则必须将其最小化才能切换回 Windows 的输出缓冲区。

唯一的解决方案是以窗口模式运行游戏(如果可以的话),并使其在一个屏幕上最大化。但根据游戏的不同,这会降低一些 FPS。

答案2

不要听别人说这不能通过独占全屏来实现。真正的问题是,当您按下 Alt-Tab 键时,它会继续将鼠标定位在您的主显示器上,而主显示器现在位于全屏应用程序下方,将您的桌面带到窗口的前层。

如果您在玩游戏时将主显示器更改为非游戏显示器,您应该能够使用 Alt-Tab 键而不会使游戏最小化,并且您将能够清楚地看到它将鼠标重新定位在哪里,并通过这样做来解释是什么导致它之前最小化......

我有一个自动热键脚本,用于交换主显示器并启动我的游戏,以及自动热键脚本中的另一个事件触发器,当它看到游戏可执行文件终止时将主显示器交换回来。

Steam 的“大画面”模式中还有一个功能,允许您指定在玩游戏时要将哪个显示器作为主显示器。它旨在将您的主显示器切换到另一个显示器进行游戏,然后在完成后将其恢复。但您也可以将其用于相反的操作,方法是将非游戏显示器指定为您要玩游戏的显示器,然后只需使用 alt-enter,然后按 win-shift-left/right,然后按另一个 alt-enter,将全屏游戏移回另一个显示器即可。

然后,当您完成游戏后,steam 会自动将您的主显示器切换回原来的位置。

希望这可以帮助。

顺便说一句...sayeed 关于直接将独占全屏写入输出缓冲区的说法并没有错,但是窗口仍然可以管理该流并控制其流式传输的层,以便它正确地嵌套在窗口之间。

否则我刚才建议的方法将不起作用......但事实确实如此。我按 Alt-Tab 键退出虚幻引擎独有的全屏游戏来输入这段代码,而我现在正盯着这个游戏......没有最小化。

我知道这是死贴,而且当时可能不是一个有效的解决方案...但今天寻找答案的人会发现它并被完全误导,除非提供适合时代的最新答案。

相关内容