流程Windows 7与Windows 10的实时输出

时间:2018-01-23 18:29:29

标签: c# windows process command-line-interface

我正在编写一个通过命令行调用外部进程的应用程序。我已将外部进程编码为不显示命令窗口,但在另一种形式的富文本框中显示外部进程的输出。此代码适用于Windows 7.但是,当我将应用程序移动到Windows 10计算机时,命令窗口是可见的,并且进程的输出不会显示在我的富文本框中。在Windows 10上调试应用程序显示未触发DeviceReceivedEventHandler。任何人都可以解释为什么操作系统和我可以修复它之间有什么不同?

以下是我遇到问题的方法:

        private void commandLineProcess(string cmdArgs)
    {
        Process process = new Process();
        ProcessStartInfo startInfo = process.StartInfo;
        startInfo.WindowStyle = ProcessWindowStyle.Hidden;
        startInfo.FileName = "CMD.exe";
        startInfo.UseShellExecute = false;
        startInfo.RedirectStandardError = true;
        startInfo.RedirectStandardInput = true;
        startInfo.RedirectStandardOutput = true;
        startInfo.CreateNoWindow = true;
        startInfo.Arguments = cmdArgs;

        if (!cmdArgs.Contains("FindDrive"))
        {
            Form progress = new Forms.mForceWriteProgress();
            progress.Show();

            process.OutputDataReceived += new DataReceivedEventHandler((sender, e) =>
            {
                if (!String.IsNullOrEmpty(e.Data))
                {
                    Forms.mForceWriteProgress.Instance.addToRichTextBox(e.Data);
                }
            });
        }

        process.Start();
        process.BeginOutputReadLine();
    }

0 个答案:

没有答案