2008-09-17 65 views
3

我正在用dot net編寫一個程序,它將使用框架2.0的Process對象執行腳本和命令行程序。我希望能夠訪問我程序中的進程的屏幕緩衝區。我已經調查過這一點,看來我需要訪問控制檯stdout和stderr緩衝區。任何人都知道這是如何使用託管代碼完成的?使用.net託管代碼屏幕抓取命令窗口

我想我需要使用附加到任務的窗口控制檯的AttachConsole和ReadConsoleOutput來從控制檯屏幕讀取字符和屬性數據塊。我需要做的是託管代碼。

http://msdn.microsoft.com/en-us/library/ms684965(VS.85).aspx

回答

2

可以使用上的System.Diagnostics.Process類StandardError的,StandardOutput和StandardInput性能做到這一點。

MSDN有一個不錯的example of redirecting standard in and out的過程。

請注意,您只能重定向您啓動的進程的輸出。您未啓動的外部進程在事實之後不能將其stdout重定向。

另請注意,要使用StandardInput,必須將ProcessStartInfo.UseShellExecute設置爲false,並且必須將ProcessStartInfo.RedirectStandardInput設置爲true。否則,寫入StandardInput流將引發異常。

+0

感謝您的迅速響應。然而,我不想讀取流。我想訪問在命令窗口中顯示的控制檯緩衝區。這與在html頁面上進行屏幕抓取相似。 – 2008-09-17 03:57:13