2010-08-05 61 views
1

我写了一个自定义的提供基于winforms的交互式shell的powershell主机。 MSDN的例子非常好,我可以在几个小时内找到工作。C#Powershell主机,捕获已启动的控制台应用程序的输出

所有标准的内置命令如dir等都按预期工作。但是,当我尝试启动另一个控制台应用程序(如FTP客户端)时,该应用程序开始向stdout发送输出。我可以通过将VS中的应用程序类型从Windows更改为控制台来看到这一点。一旦我从交互式shell启动FTP,FTP就开始与控制台窗口交谈。

任何人都解决过这个问题吗?在C++中,我可以重定向stdin和stdout并完成它,但我没有看到在c#中执行此操作的方法。帮帮我!

更新

好吧,什么我运行的是不是一个内置的命令将立即开始与控制台窗口交互。

回答

1

检查了这一点,也许它可以帮助

Process p = new Process(); 
    p.StartInfo.FileName = "netstat"; 
    p.StartInfo.Arguments = "-a"; 
    p.StartInfo.RedirectStandardOutput = true; 
    p.StartInfo.UseShellExecute = false; 
    p.Start(); 
    System.Diagnostics.Debug.WriteLine(p.StandardOutput.ReadToEnd()); 
+1

谢谢。这适用于cmd.exe和其他可执行文件,但不适用于PowerShell。 – 2010-08-06 14:35:48

+0

对不起,我完全错过了Powershell的一部分 – 2010-08-06 19:40:16

1

我终于找到工作的例子here!虽然它不使用.NET框架中的Powershell类,但它完全符合我的需求,包括从启动的控制台应用程序成功捕获io。

相关问题