我看到几个关于如何启动进程并将数据推送到标准输入的问题,但没有看到如何控制它们的输出去向。
首先是我当前的代码,从控制台模式 C# 应用程序运行:
// Prepare the process to run
ProcessStartInfo start = new ProcessStartInfo();
// Enter in the command line arguments, everything you would enter after the executable name itself
start.Arguments = " -";
// Enter the executable to run, including the complete path
start.FileName = "doxygen.exe";
// Do you want to show a console window?
start.WindowStyle = ProcessWindowStyle.Normal;
start.CreateNoWindow = false;
start.RedirectStandardInput = true;
start.UseShellExecute = false;
// Run the external process & wait for it to finish
using (Process proc = Process.Start(start))
{
//doxygenProperties is just a dictionary
foreach (string key in doxygenProperties.Keys)
proc.StandardInput.WriteLine(key+" = "+doxygenProperties[key]);
proc.StandardInput.Close();
proc.WaitForExit();
// Retrieve the app's exit code
int exitCode = proc.ExitCode;
}
当我运行它时会发生什么,我没有看到任何新窗口(虽然我认为我应该)并且所有 doxygen.exe 的标准输出都打印到我的应用程序的控制台窗口。
我想要发生的是两件事之一:
- Doxygen 在可见窗口中启动,我可以在该窗口中看到它的标准输出,而不是在我的应用程序窗口中。
- Doxygen 在隐藏窗口中启动,它的标准输出被写入日志文件。
我怎样才能实现这些?
此外,为什么我没有为生成的进程获得一个单独的窗口,为什么生成的进程将输出写入我的窗口不是它自己的?