【问题标题】:Screen scraping a command window using .net managed code使用 .net 托管代码抓取命令窗口的屏幕
【发布时间】:2010-09-09 22:28:42
【问题描述】:

我正在 dot net 中编写一个程序,它将使用框架 2.0 的 Process 对象执行脚本和命令行程序。我希望能够在我的程序中访问进程的屏幕缓冲区。我对此进行了调查,看来我需要访问控制台标准输出和标准错误缓冲区。有人知道这是如何使用托管代码完成的吗?

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

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

【问题讨论】:

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


    【解决方案1】:

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

    MSDN 有一个不错的example of redirecting standard in and out 进程。

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

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

    【讨论】:

    • 感谢您的快速回复。但是,我不想阅读流。我想访问显示在命令窗口中的控制台缓冲区。这类似于在 html 页面上进行屏幕抓取。
    • 我想我需要使用控制台的 AttachConsole 方法,然后使用 ReadConsoleOutput 方法来访问一个矩形的字符和属性数据。我不知道如何在托管代码中执行此操作。
    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    相关资源
    最近更新 更多