【问题标题】:How to read all text written to console [duplicate]如何读取写入控制台的所有文本[重复]
【发布时间】:2020-01-06 19:29:46
【问题描述】:

我访问了像How to get all text from console to string? 这样的页面。

是否有一个函数可以在控制台中获取所有文本并将其保存到字符串或数组中?我正在考虑在编写文本后从控制台获取文本。这可能吗?如果不是像我尝试过的那样模拟控制台功能的东西,但包括删除文本。

// I tried this. I do this for Write(),WriteLine(),ReadLine(),Read()
// It works for these functions. But when I remove something from console
// it don't save.
public static void Write(object value)
{
    Console.Write(value);
    AddToOutput(value.ToString());
}

public static void WriteLine(object value)
{
    Console.WriteLine(value);
    AddToOutput(value.ToString()+ "\n");
}

public static void WriteLine()
{
    Console.WriteLine();
    AddToOutput("\n");
}

public static string ReadLine()
{
    string txt = Console.ReadLine();
    AddToOutput(txt+"\n");
    return txt;
}

public static void AddToOutput(string txt)
{
    Log += txt;
}

【问题讨论】:

  • 如何删除文本?更改位置并覆盖?
  • 问题不是很清楚;您是说您在控制台窗口中运行了一个控制台程序,并且您想在启动程序之前阅读控制台中已经的文本吗?你到底在问什么?如果您想知道您刚刚向控制台写入了哪些文本,您已经知道了;你写的!
  • 是的,我的意思是改变位置和覆盖。我想得到已经写在控制台中的文本
  • 可能您应该在将数据写入控制台时将其保存到变量或数组中。当您在控制台中移动光标并更改文本时,还可以修改保存在变量中的数据。
  • 无法从 C#直接 执行此操作,但您可以通过对读取控制台当前内容的 Win32 API 执行 PInvoke 调用来间接执行此操作。我已将问题作为先前类似问题的副本关闭;有关如何执行 PInvoke 步骤以从控制台读取的说明,请参阅该问题的答案。

标签: c#


【解决方案1】:
Console.ReadKey();

您也许可以使用 ReadKey 来跟踪任何退格键,然后将前一个字符串设置为要迭代的变量。

我可能会结合使用 ReadLine() 和 ReadKey() 来尝试跟踪所有内容...也许稍后在程序中将它们结合起来。

【讨论】:

  • 是的,但我的问题是程序更改了光标位置并替换了文本。不是用户
  • 在这种情况下,我会将所有控制台输出保存到一个文本文件中,然后稍后解析它以获得您需要的数据。 stackoverflow.com/questions/4470700/…
猜你喜欢
  • 1970-01-01
  • 2019-04-15
  • 2014-01-22
  • 1970-01-01
  • 2021-04-12
  • 2014-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多