2010-08-05 58 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。

相關問題