0

我想制作一个 GUI 来在 Windows 中托管 Minecraft 服务器。Minecraft 服务器使用一个 .jar 文件和一个 .bat 文件来运行 .jar 文件并读取输出并向它提供输入。

如何制作一个可以打开 .jar 文件、读取输出并为其提供输入的 C++ 程序?

我试过了execlp,但是当我#include <unistd.h>收到“无法读取源文件”的错误时(我认为这是因为它是为 POSIX 制作的,但我不确定)。

任何帮助,将不胜感激!

(另外,你知道,我对编程和 C++ 很陌生)

4

1 回答 1

0

我设法在 C# 中做到了这一点。这是代码(我认为 C++ 代码会非常相似):

var arguments = "-jar -Xms" + Settings.ServerStartInfo.InitialRam + "M -Xmx" +
                            Settings.ServerStartInfo.MaximumRam + "M \"" + Settings.ServerStartInfo.FileName +
                            "\" -nojline" + Settings.ServerStartInfo.Arguments; 

var processStartInfo = new ProcessStartInfo
{
    FileName = "javaw.exe",
    Arguments = arguments,
    CreateNoWindow = true,
    ErrorDialog = false,
    RedirectStandardOutput = true,
    RedirectStandardError = true,
    RedirectStandardInput = true,
    StandardOutputEncoding = Encoding.UTF8,
    StandardErrorEncoding = Encoding.UTF8,
    UseShellExecute = false,
    WorkingDirectory = Settings.ServerStartInfo.WorkingDirectory
};

Process = new Process { StartInfo = processStartInfo };
Process.OutputDataReceived += ServerOutputHandler.ServerOutputReceived;
Process.ErrorDataReceived += ServerOutputHandler.ServerOutputReceived;
Process.Start();

Process.BeginOutputReadLine();
Process.BeginErrorReadLine();
Process.WaitForExit();

Process.Start();

有关更多信息,请查看此处:https ://servercrafter.codeplex.com/SourceControl/latest#ServerCrafter/ServerCrafter.ClassLibrary/ClassLibrary/Server/Server.cs

于 2014-01-04T17:32:25.843 回答