使用 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 命令返回的字符串吗?