我正在编写一个通过命令行调用外部进程的应用程序。我已将外部进程编码为不显示命令窗口,但在另一种形式的富文本框中显示外部进程的输出。此代码适用于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();
}