如何在以编程方式启动 Steam 游戏时获取其标准输出

如何在以编程方式启动 Steam 游戏时获取其标准输出

我已成功通过 Windows 上的 Steam 启动 Factorio

steam -applaunch 427520

但不幸的是,我需要我正在开展的项目的标准输出,而此命令启动的 steam 进程退出,导致我没有标准输出。我也直接启动了 Factorio,但我在标准输出上得到的只有:

0.000 Initializing Steam API.
0.000 Steam requires game restart, restarting...

然后就什么都没有了……

当我启动非 Steam 版本时,我可以成功从 stdout 获取各种输出。Steam 是否劫持了 stdout?如果是,我在哪里可以找到它?

我进行的额外测试包括向 Factorio 发送额外参数

steam -applaunch 427520 --version

似乎可以正常工作,因为游戏无法启动,并且不会像使用未知参数那样返回错误,但我不知道输出被发送到哪里。直接使用版本参数启动游戏会返回:

Version: 1.1.59 (build 59719, win64, steam)
Binary version: 64
Map input version: 0.18.0-0
Map output version: 1.1.59-0 

使用 appid 为 452280 的演示应该可以进行类似的测试

答案1

让 steam 启动器执行你的程序而不是游戏。

为此,您可以编辑启动参数,如下所示:

myLauncher %command%

其中 myLauncher 是启动器的路径。然后,当 steam 启动“游戏”时,它实际上会执行启动器,并且游戏可执行文件的路径将作为第一个参数传递。

这使您可以自己启动游戏,以便您可以捕获标准输出,并且关键的是,steam 正在等待游戏启动,因此当游戏通过 steam 检查时,它知道游戏已正确启动。

如果您仍希望用户从您的应用发起启动,您可以设置您的应用,让 Steam 在未收到参数时启动游戏,然后退出。然后 Steam 将重新启动您的应用,第二个实例将按预期工作。

相关内容