在.NET中的当前命令窗口中启动进程

时间:2010-09-22 14:37:18

标签: .net vb.net process console

我在VB.NET控制台应用程序中有这个:

Dim p As ProcessStartInfo
p = New ProcessStartInfo(Environment.CurrentDirectory & "\bin\javac.exe",ClassName & ".java")
Dim ps As Process = Process.Start(p)

这会在文件上运行java编译器,但它会在新窗口中执行 。我希望javac的输出出现在运行我的应用程序的同一个控制台中。 我怎样才能做到这一点?也许还有另一种在当前控制台中运行命令的方法?或者也许我可以通过打开第二个控制台窗口并将其输出重定向到当前控制台?

2 个答案:

答案 0 :(得分:2)

我不认为您可以在同一个控制台中运行,因为它被您的应用程序占用。如果它只是显示输出,您可以使用stream redirection。如果您执行javac [here go params] >out.txt 2>err.txt,则可以在javac完成后加载来自它们的输出。

您甚至可以通过ProcessStartInfo.RedirectStandardOutputProcess.StandardOutput

将流重定向到您的应用

答案 1 :(得分:2)

我认为您不能在同一个控制台中运行,但您可以通过重定向标准来获取输出:

Dim si = New ProcessStartInfo(Environment.CurrentDirectory & "\bin\javac.exe",ClassName & ".java")

si.RedirectStandardOutput = True
si.UseShellExecute = False
Dim proc = New Process() 
proc.StartInfo = si
proc.Start()
proc.StandardOutput.ReadToEnd()
proc.WaitForExit()