我有两个程序,一个是游戏,一个是游戏的发射器。我首先创建了启动器,以接收游戏中的基本信息并检测任何类型的退出(崩溃,任务管理器进程停止等)
我将为流程运行器附加我当前的代码,它似乎是互联网上的所有解决方案,但我无法弄清楚的是如何让游戏向启动器发送信息。我试过Console.WriteLine(“login = ...”);但它似乎没有发送任何东西。
private void button1_Click(object sender, EventArgs e)
{
using (Process exeProcess = Process.Start(new ProcessStartInfo() { UseShellExecute = false,
FileName = "Game.exe",
WorkingDirectory = Environment.CurrentDirectory,
RedirectStandardOutput = true}))
{
string output = "";
while (!exeProcess.HasExited)
{
try
{
output += exeProcess.StandardOutput.ReadToEnd() + "\r\n";
}
catch (Exception exc)
{
output += exc.Message + "::" + exc.InnerException + "\r\n";
}
}
MessageBox.Show(output);
}
}
答案 0 :(得分:1)
关于您的代码,通过添加以下行,您可以获得游戏引发的错误消息。
RedirectStandardError = true,
如果您使用.NET开发游戏,可以按如下方式返回相应的错误代码。根据错误代码,您可以在启动器中显示相应的消息
enum GameExitCodes
{
Normal=0,
UnknownError=-1,
OutOfMemory=-2
}
//Game Application
static void Main(string[] args)
{
try
{
// Start game
Environment.ExitCode = (int)GameExitCodes.Normal;
}
catch (OutOfMemoryException)
{
Environment.ExitCode = (int)GameExitCodes.OutOfMemory;
}
catch (Exception)
{
Environment.ExitCode = (int)GameExitCodes.UnknownError;
}
}
注意:您可以查看在C#中开发的此open source game launcher作为参考,或根据您的需要进行修改。
编辑:根据评论添加信息
有两种方法可以在两个.NET进程之间进行通信。他们是