关于控制台:使用.net托管代码的屏幕抓取命令窗口

关于控制台:使用.net托管代码的屏幕抓取命令窗口

Screen scraping a command window using .net managed code

我正在用点网编写一个程序,该程序将使用Framework 2.0的Process对象执行脚本和命令行程序。 我希望能够访问程序中进程的屏幕缓冲区。 我对此进行了调查,看来我需要访问控制台stdout和stderr缓冲区。 有人知道如何使用托管代码来完成此任务吗?

我想我需要使用连接到任务的Windows控制台的AttachConsole和ReadConsoleOutput,以便从控制台屏幕读取字符和属性数据块。 我需要做的是托管代码。

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


您可以使用System.Diagnostics.Process类上的StandardError,StandardOutput和StandardInput属性来完成此操作。

MSDN有一个很好的示例,可以将标准重定向到进程中和从进程中移出。

请注意,您只能重定向启动的进程的输出。 实际上,您没有启动的外部进程无法将其stdout重定向。

还要注意,要使用StandardInput,必须将ProcessStartInfo.UseShellExecute设置为false,并且必须将ProcessStartInfo.RedirectStandardInput设置为true。 否则,写入StandardInput流将引发异常。


推荐阅读