C++ Qt - 检查蒸汽游戏是不是正在以编程方式运行

Posted

技术标签:

【中文标题】C++ Qt - 检查蒸汽游戏是不是正在以编程方式运行【英文标题】:C++ Qt - Check if a steam game is running or not programmaticallyC++ Qt - 检查蒸汽游戏是否正在以编程方式运行 【发布时间】:2018-01-07 11:56:36 【问题描述】:

我想知道是否有办法在 Windows 上检查 Steam 游戏是否以编程方式运行,知道它的 steamid。 我知道每个游戏都有它的注册表项,其中有一个运行值。 然而,这个值似乎并不适用于所有游戏。例如,它适用于 Undertale:它会在打开和关闭时立即更新。问题是火箭联盟的运行价值在开场时没有改变。我不知道这个问题是否会发生在其他游戏中,或者是否只发生在火箭联盟中,但在这种情况下,解决方案似乎不够好。

我问这个的原因是因为从外部程序运行游戏只检索 steam.exe 进程 ID 而不是实际的游戏进程 ID,所以我坚持手动检查。

提前致谢!

【问题讨论】:

你确定火箭联盟的值不会改变吗?也许您需要在前台运行游戏,您是手动查找值还是记录下来? 是的,我确定。虽然游戏是全屏的,但我怀疑这会改变它的状态。我每次都手动检查该值,但我的软件实际上会记录它,并且它从未更改为 Running 2 分钟(不过我没有尝试超过 2 分钟)。 显然它确实运行了,但只运行了一秒钟(在窗口弹出之前) Rocket League是steam游戏还是外接游戏? 这是一款 Steam 游戏,我找到了一种更好的方法来跟踪 Steam 游戏的运行情况,如果您有兴趣,我会在几分钟内回答我的问题。 【参考方案1】:

对于想知道的人,我找到了解决方案。 在HKEY_CURRENT_USER\Software\Valve\Steam 有一个RunningAppID 值,它将以当前运行的游戏 steamid 作为值。到目前为止,这对我来说是 100% 可靠的,所以我相信这是我正在寻找的解决方案。 希望对你也有帮助。

【讨论】:

是否有其他方法,例如,通过运行一些带有参数的命令,如steam --currently-running?我问是因为我想在 linux 上使用它。我也尝试用注册表来做,因为目前我需要它用于在质子下运行的游戏。我找到了这个主题reddit.com/r/linux_gaming/comments/9ar9ru/…,但似乎质子注册表没有您命名的密钥。

以上是关于C++ Qt - 检查蒸汽游戏是不是正在以编程方式运行的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式检查 Windows 是不是已使用 C++ 激活

BeautifulSoup:抓取蒸汽愿望清单游戏 - .findAll 不返回在检查器中可见的嵌套 div

如何以编程方式检查手机当前是不是正在充电或正在使用电池?

如何使用 Qt (C++) 检查程序是不是按其名称运行

如何以编程方式检查 SSAS 数据库/多维数据集是不是正在处理?

C#:如何以编程方式检查 Web 服务是不是已启动并正在运行?