如何在活动窗口全屏(以及退出全屏)时运行批处理文件

如何在活动窗口全屏(以及退出全屏)时运行批处理文件

正如标题所述,我想编写一个脚本来检测程序何时进入或退出全屏;然后这两个触发器将运行两个 .bat 文件之一来启动或停止 Rainmeter.exe 进程。

目标是当游戏以全屏方式启动时自动关闭 Rainmeter,释放 CPU 资源,然后在退出全屏时重新激活 Rainmeter。

问题是,我不确定如何检测活动窗口是否为全屏,到目前为止我在网上搜索都没有找到答案。有没有我可以检查的标志,或者我可以检查日志中的特定行?可以使用 Windows 任务计划程序来完成此操作吗?

我知道这是可能的,因为当程序进入/退出全屏时,ControllerCompanion 程序(将控制器变成鼠标)会自动停用/重新激活。我可以利用此功能吗?

我熟悉 Batch、Python 和 Javascript,并准备学习任何新语言来完成这项工作,只是寻找正确的方向!

顺便提一下:我遇到过关于“全屏”含义的相互矛盾的答案;据我所知,“全屏”程序完全控制显示,而“全屏窗口”将程序窗口绘制在桌面上,填满整个屏幕。这是正确的吗?或者在两种情况下桌面都是在全屏窗口下绘制的(这意味着它们是一样的)?

答案1

解决你的问题将会是一个艰巨的挑战。

幸运的是,这是一个经典的 XY 问题。你遇到了一个问题,想到了一个解决方案,现在你正在寻求解决方案的帮助。这里的问题是,你的解决方案不是最实用和最容易执行的。

相反,我会为要使用的每个游戏创建一个批处理文件。该批处理文件会停止 rainmeter,然后启动游戏,等待游戏退出,然后启动 rainmeter,然后退出。

您基本上可以创建 1 个批处理文件并使用可执行文件作为参数,然后使用原始快捷方式作为参数编辑批处理文件的所有快捷方式。

此类批处理文件的示例如下:

    @echo off

::  -- Stop Rainmeter
    stoprainmeter.cmd

::  -- Change to the folder the game is stored in
    cd /d %~dp1

::  -- Launch the game
    start /wait "%1"

::  -- Start Rainmeter
    startrainmeter.cmd

双击游戏,无论游戏是否全屏,它都会关闭 rainmeter,启动游戏,一旦游戏退出,批处理文件将运行 rainmeter。

回答你的最后一个问题:全屏游戏和窗口无边框全屏确实有很大不同。全屏游戏将创建一个新的虚拟空间并将视口移动到该虚拟空间。因此,它后面没有桌面,进入全屏模式和退出全屏模式需要一点时间。窗口无边框全屏会在桌面上绘制,使其看起来像是全屏的,但任何具有始终在最上面标志的窗口应用程序都可能被绘制在桌面上,如果你使用程序使任何窗口半透明,并将其用于你的游戏,你将能够通过它看到你的桌面,而使用真正的全屏模式,你将看不到。

相关内容