我有一个WinForm应用程序正在做一些工作并用System.Console
编写一些输出,这是代码:
static int Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Console.WriteLine("Some String");
return 1;
}
假设我们将其命名为SubApp.exe
在另一个程序中,我想执行此subApp.exe
并读取它使用System.Diagnostics.Process
创建的输出。这是我的代码:
System.Diagnostics.Process p = System.Diagnostics.Process.Start("SubApp.exe", "Some Parameter");
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.Start();
p.WaitForExit();
string output = p.StandardOutput.ReadToEnd();
string error = p.StandardError.ReadToEnd();
int exitCode = p.ExitCode;
但不幸的是,output
和error
都是空的,更糟糕的是exitCode
是0
。问题是什么?我是否以正确的方式进行手术?
答案 0 :(得分:0)
让你的Rectangle
向控制台写入参数,然后它会将控制台输出返回到过程输出
SubApp
然后致电您的static int Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Console.WriteLine(args[0]); // this will print only 'Some' part of argument all string will be in args seperating by space
Console.WriteLine(args[1]); // this will print "Parameter"
return 1;
}
SubApp
执行此操作后,您将System.Diagnostics.Process p = System.Diagnostics.Process.Start("SubApp.exe", "Some Parameter");
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.Start();
string output = p.StandardOutput.ReadToEnd();
string error = p.StandardError.ReadToEnd();
p.WaitForExit();
int exitCode = p.ExitCode;
变为Some Parameter
变量