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

6vl6ewon  于 2022-12-20  发布在  .NET
关注(0)|答案(1)|浏览(155)

我正在用dot net编写一个程序,它将使用framework 2.0的Process对象执行脚本和命令行程序。我希望能够访问程序中进程的屏幕缓冲区。我已经对此进行了调查,似乎我需要访问控制台stdout和stderr缓冲区。有人知道如何使用托管代码实现这一点吗?
我想我需要使用附加到任务的Windows控制台的AttachConsole和ReadConsoleOutput,以便从控制台屏幕读取字符和属性数据块。我需要使用托管代码来完成此操作。
参见http://msdn.microsoft.com/en-us/library/ms684965(VS.85).aspx

tzcvj98z

tzcvj98z1#

可以使用System.Diagnostics.Process类的StandardError、StandardOutput和StandardInput属性来完成此操作。
MSDN有一个很好的example of redirecting standard in and out进程。
注意,你只能重定向你启动的进程的输出,你没有启动的外部进程不能在事后重定向它们的stdout。
另请注意,若要使用StandardInput,必须将ProcessStartInfo.UseShellExecute设置为false,并且必须将ProcessStartInfo.RedirectStandardInput设置为true。否则,写入StandardInput流将引发异常。

相关问题