WPF cmd.exe Процесс закрывается сразу - PullRequest
0 голосов
/ 17 мая 2018

В моем приложении WPF я пытаюсь открыть cmd.exe через System.Diagnostics.Process, но каждый раз, когда он попадает в process.Start (), он немедленно закрывается, и я не могу записать в него что-либо еще. Однако если я вызову статический Process.Start (), он останется открытым, но тогда я не уверен, как писать в него. Смотри ниже.

        var processInfo = new ProcessStartInfo("cmd.exe")
        {
            UseShellExecute = false,
            RedirectStandardInput = true,
        };

        var process = new Process()
        {
           StartInfo = processInfo,
        };

        process.Start(); // This close immediately and not work 

        Process.Start("cmd.exe"); // This will work but can't write to it

        process.StandardInput.WriteLine(someText);
        process.StandardInput.WriteLine(moreText);

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Я провел небольшое исследование и обнаружил, что реализованное решение Здесь работает.Не уверен, что это лучший подход, но он работал для меня.

[DllImport("kernel32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool AllocConsole();

private void BtnSubmit_OnClick(object sender, RoutedEventArgs e)
    {
        var processInfo = new ProcessStartInfo("cmd.exe")
        {
            UseShellExecute = false,
            RedirectStandardInput = true
        };

        var process = new Process()
        {
            StartInfo = processInfo,
        };

        AllocConsole();
        process.Start(); // This close immediately and not work 

        process.StandardInput.WriteLine("someText");
        process.StandardInput.WriteLine("moreText");
        process.WaitForExit();
    }

enter image description here

0 голосов
/ 17 мая 2018

Используется для ожидания cmd.

process.WaitForExit(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...