使用 CreateProcess 运行游戏可执行文件

Posted

技术标签:

【中文标题】使用 CreateProcess 运行游戏可执行文件【英文标题】:Using CreateProcess to run a game executable 【发布时间】:2016-05-12 14:08:46 【问题描述】:

我目前正在制作自定义 UI,因此我正在尝试使用 CreateProcess 从我的 C++ 应用程序中启动游戏。到目前为止,这是我的代码

PROCESS_INFORMATION Processinfo;
STARTUPINFO StartupInfo;
ZeroMemory(&StartupInfo, sizeof(StartupInfo));
StartupInfo.cb = sizeof(StartupInfo);
ZeroMemory(&Processinfo, sizeof(Processinfo));
if (CreateProcess(TEXT("C:\\Program Files(x86)\\Steam\\steamapps\\common\\Surgeon Simulator VR Meet The Medic\\Win32\\SurgeonVR.exe"),
    GetCommandLineA(),
    NULL,
    NULL,
    false,
    CREATE_SUSPENDED,
    NULL,
    NULL,
    &StartupInfo,
    &Processinfo))

    system("pause");

我不太确定我哪里出错了,因为我以前从未使用过 CreateProcess,但是在查看了大量示例之后,我试图模仿其他人所做的事情,但没有成功。流程没有被创建,并且游戏未启动。非常感谢任何帮助!

【问题讨论】:

有什么问题? 进程未创建,游戏未启动。抱歉应该在帖子中提到! 当然它不会运行 - 它是通过传递 CREATE_SUSPENDED 标志来创建的。 我把那个参数设置为null,还是不行 通过使用 char* path = "C:\\Program Files(x86)\\Steam\\steamapps\\common\\Surgeon Simulator VR Meet The Medic\\Win32\\SurgeonVR 解决了这个问题。可执行程序”;然后使用路径作为参数代替 【参考方案1】:

通过使用 char* path = "C:\Program Files(x86)\Steam\steamapps\common\Surgeon Simulator VR Meet The Medic\Win32\SurgeonVR.exe" 解决了这个问题;然后使用路径作为参数。我认为问题在于路径变量以及使用 CREATE_SUSPENDED 作为参数的错误。

【讨论】:

以上是关于使用 CreateProcess 运行游戏可执行文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CreateProcess 在 cmd 中执行命令?

我可以访问从 Delphi CreateProcess 命令返回的字符串吗?

带有 DEBUG_PROCESS 标志的 CreateProcess 在某些可执行文件上导致错误 50

delphi中ShellExecute使用详解

来自内存缓冲区的 CreateProcess

CreateProcess 执行批处理文件