C#如何使用参数读取控制台输出
是否可以运行控制台应用程序并在C#中以字符串形式返回其输出内容 我希望能够在运行console应用程序时使用参数:C#如何使用参数读取控制台输出,c#,console,C#,Console,是否可以运行控制台应用程序并在C#中以字符串形式返回其输出内容 我希望能够在运行console应用程序时使用参数: c:\files\app.exe -a 1 -b 2 -c 3 这不是我今天读到的最清楚的内容,但我只能假设您正在生成一个进程(使用process.Start()?),并希望将其输出返回到您的程序中 如果是的话,这可能就是你想要的。例如: System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnos
c:\files\app.exe -a 1 -b 2 -c 3
这不是我今天读到的最清楚的内容,但我只能假设您正在生成一个进程(使用
process.Start()
?),并希望将其输出返回到您的程序中
如果是的话,这可能就是你想要的。例如:
System.Diagnostics.ProcessStartInfo startInfo =
new System.Diagnostics.ProcessStartInfo(@"c:\files\app.exe",@"-a 1 -b 2 -c 3");
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
Process p = Process.Start(startInfo);
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
我不断从这条消息中得到错误,说新进程并没有只接受1个参数的构造函数。在启动的进程运行之前,我的应用程序无法显示其窗口。当我杀死它时,我的应用程序显示了带有捕获输出的窗口。我正在使用这段代码,就像它与另一个属性——CreateNoWindow一样。如何“正常”显示我的应用程序?@Laserson您的意思是,在进程
p
运行之前,您的应用程序无法显示其控制台窗口?看起来您的CreateNoWindow正在将自己应用于当前进程以及启动的进程?还是我完全误解了?@lc不,我有一个普通的WinForms应用程序。它启动一个控制台编码器(mencoder)。我需要得到这个编码器的输出,例如在我的表单上显示它。但直到编码器进程运行,我的表单才会出现。有可能在“实时”中获得控制台输出吗?@Laserson我能马上想到的唯一一件事是,它与上面代码所在的位置有关。例如,如果从Form.Load
事件调用它,则该过程将在显示该表单之前启动(并与您描述的行为类似)。但是,我想得越多,就越觉得您在与UI相同的线程上运行此代码,并且它被阻止在p.WaitForExit()
。尝试将上述内容放入报告进度的BackgroundWorker
中,然后使用进度报告将消息发送回UI线程。