使用.net托管代码屏幕抓取命令窗口

时间:2008-09-17 03:51:16

标签: .net console screen-scraping buffer console-scraping

我正在用dot net编写一个程序,它将使用框架2.0的Process对象执行脚本和命令行程序。我希望能够在我的程序中访问进程的屏幕缓冲区。我已经调查了这一点,似乎我需要访问控制台stdout和stderr缓冲区。有人知道如何使用托管代码实现这一目标吗?

我认为我需要使用附加到任务的Windows控制台的AttachConsole和ReadConsoleOutput,以便从控制台屏幕读取一组字符和属性数据。我需要做的是托管代码。

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

1 个答案:

答案 0 :(得分:2)

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

MSDN有一个很好的example of redirecting standard in and out进程。

请注意,您只能重定向已启动的进程的输出。您未启动的外部进程无法在事后重定向其标准输出。

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