Process.Start 没有启动游戏应用程序?

Posted

技术标签:

【中文标题】Process.Start 没有启动游戏应用程序?【英文标题】:Process.Start Not Starting Game Application? 【发布时间】:2016-07-28 13:34:40 【问题描述】:

我对 C# 还是很陌生,我以前也玩过它,但我现在真的很想了解它。 我想为游戏制作一个外部控制台应用程序,该游戏是一个糟糕的端口,它需要在后台打开很多程序以使其更具可玩性。所以我决定制作一个程序,将launcher.exe替换为在游戏启动时启动所有程序并在游戏关闭时关闭它们的程序。

确切地说,这款游戏是生化奇兵 2,但我很可能会制作这个程序,这样我就可以将它与其他可以使用该程序的游戏一起使用。 这是我的问题,当我开始调试时,它会打开一个程序来帮助游戏(FlawlessWidescreen),但游戏本身不会打开。 我试过只运行 Bioshock2,但它显示它运行了一秒钟然后关闭,没有错误,所以我无法完全弄清楚我做错了什么。

这是我的代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.Security;

namespace Bioshock2_Advanced_Launcher

        public class SecurityException : SystemException
    
        static void Main(string[] args)
        
            Process.Start("F:\\Steam Library\\steamapps\\common\\BioShock 2\\SP\\Builds\\Binaries\\FlawlessWidescreen.lnk");
            Process.Start("F:\\Steam Library\\steamapps\\common\\BioShock 2\\SP\\Builds\\Binaries\\Bioshock2.exe");
        
    

FlawlessWidescreen 是一个快捷方式,我必须授予它更高的权限,这样我就不必一直以管理员身份运行应用程序。

我还想知道你们中是否有人知道如何检查 BioShock2 是否关闭,以便其他程序随之关闭。有什么想法吗?

谢谢

编辑:我还想补充一点,我尝试过的另一款游戏运行良好。

【问题讨论】:

如果你保留了处理结果,你可以检查它是否还活着 使用您设置EnableRaisingEvents = trueProcessStartInfo 对象修改开头。然后将启动的进程保存在变量中并挂钩Exited 事件。在此之前保持您的应用程序有效。 (msdn.microsoft.com/en-us/library/…) 为什么你的程序类名是 SecurityException : SystemException?请将其更改为程序 【参考方案1】:

使用 WorkingDirectory 修复它。

ProcessStartInfo bioshock2Info = new ProcessStartInfo();
bioshock2Info.FileName = (@"F:\Steam Library\steamapps\common\BioShock 2\SP\Builds\Binaries\Bioshock2.exe");
bioshock2Info.WorkingDirectory = Path.GetDirectoryName(@"F:\Steam Library\steamapps\common\BioShock 2\SP\Builds\Binaries\Bioshock2.exe");
Process bioshock2 = Process.Start(bioshock2Info);

【讨论】:

以上是关于Process.Start 没有启动游戏应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

在windowService用Process.Start()启动程序没有界面-记录

安装程序在使用 Process.Start() 启动时失败,但在双击时工作

process.start启动exe,程序中会调用配置文件的路径是相对路径,产生启动错误,怎么办?

将由 ShellExec/Process.Start 启动的浏览器置于最前面

Process.Start() 啥都不做

从 Windows 服务调用时 Process.Start 不起作用