从WPF应用程序将控制台附加到(java)进程

时间:2019-08-26 22:48:27

标签: c# wpf console

我目前使用Process从WPF应用程序启动一堆Java进程,通常这些进程将在自己的窗口中运行。但是,当我想从WPF应用程序向Java应用程序发送命令时,它要求我使用 StartInfo.UseShellExecute = false;导致进程在没有控制台的情况下运行。

我尝试在SO(How to open/close console window dynamically from a wpf application?)和其他几个目录中寻找答案,但大多数似乎是为了让该应用程序以控制台模式或UI模式运行。无需将控制台附加到System.Diagnostics.Process

此版本将打开控制台

namespace MMSG.Instances
{
    public abstract class JavaServer : Process
    {
        protected JavaServer(string workingDir)
        {
            StartInfo.FileName = "java";
            StartInfo.UseShellExecute = true;
            StartInfo.RedirectStandardInput = true;
            StartInfo.WorkingDirectory = workingDir;
            StartInfo.CreateNoWindow = false;
            StartInfo.ErrorDialog = true;
            EnableRaisingEvents = true;
        }

        protected JavaServer(string ram, string workingDir, string jarLocation) : this(workingDir)
        {
            StartInfo.Arguments = $"-Xms{ram} -Xmx{ram} -jar \"{jarLocation}\"";
        }
    }
}

With window

但是尝试使用Process将输入发送到javaServer.StandardInput.WriteLine("stop");时 我收到此错误:System.InvalidOperationException: The Process object must have the UseShellExecute property set to false in order to redirect IO streams.并且如前所述,将其设置为false会完全删除“控制台”窗口。

预期结果:允许在仍具有控制台窗口的同时向该进程发送命令。 实际结果:没有命令或没有控制台

0 个答案:

没有答案