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 = true
的ProcessStartInfo
对象修改开头。然后将启动的进程保存在变量中并挂钩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,程序中会调用配置文件的路径是相对路径,产生启动错误,怎么办?