【问题标题】: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 游戏的运行情况,如果您有兴趣,我会在几分钟内回答我的问题。

标签: c++ windows qt registry steam


【解决方案1】:

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

【讨论】:

  • 是否有其他方法,例如,通过运行一些带有参数的命令,如steam --currently-running?我问是因为我想在 linux 上使用它。我也尝试用注册表来做,因为目前我需要它用于在质子下运行的游戏。我找到了这个主题reddit.com/r/linux_gaming/comments/9ar9ru/…,但似乎质子注册表没有您命名的密钥。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-17
  • 2011-01-31
  • 2012-08-19
  • 2014-09-04
  • 1970-01-01
相关资源
最近更新 更多