【问题标题】:C#. How to programmatically select and copy text from the console application?C#。如何以编程方式从控制台应用程序中选择和复制文本?
【发布时间】:2010-11-27 16:41:47
【问题描述】:

我想以编程方式将控制台应用程序的整个输出复制到剪贴板中(这样用户就可以自动获取它而无需修改 cmd 窗口)。

我知道如何访问剪贴板。我不知道如何从 C# 获取控制台窗口文本。

C# 3.5 / 4

【问题讨论】:

  • 控制台应用程序是如何启动的?也就是说,由用户手动?通过你的程序?
  • 如何识别程序中的控制台窗口?

标签: c# .net


【解决方案1】:

下面的一个基本解决方案(只是将标准输出重定向到StringBuilder 实例)。 您可能需要在控制台应用程序中自己添加对System.Windows.Forms 的引用。

using System;
using System.IO;
using System.Text;
using System.Windows.Forms;

public class Redirect
{
    [STAThread()]
    public static void Main()
    {
        StringBuilder sb = new StringBuilder();
        StringWriter sw = new StringWriter(sb);

        Console.SetOut(sw); // redirect

        Console.WriteLine("We are redirecting standard output now...");

        for (int i = 0; i < 10; i++) { Console.WriteLine(i); }

        sw.Close();
        StringReader sr = new StringReader(sb.ToString());
        string completeString = sr.ReadToEnd();
        sr.Close();

        Clipboard.SetText(sb.ToString());
        Console.ReadKey(); // just wait... (press ctrl+v afterwards)
    }
}

【讨论】:

  • 但这不会保留前景色和背景色,或者这些颜色是否以某种方式编码为 Unicode 符号?
【解决方案2】:

这会将标准输出提供给剪贴板。

dir | clip

dir 只是我的测试命令...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 2016-10-12
    • 1970-01-01
    • 2014-03-21
    相关资源
    最近更新 更多