c# - 控制台输出格式和控制台分配

标签 c# console-application

我有几个问题都与同时作为控制台应用程序运行的 Windows 应用程序有关。

在我的程序入口点,我有逻辑来确定是否传入了命令行参数,如果是,我调用 AllocConsole()。这很好用,但我很好奇是否可以不弹出新的控制台窗口。所以期望用户将从命令窗口调用它,所以我希望应用程序的输出进入用户当前正在使用的窗口,而不是其他屏幕。此外,通过 AllocConsole() 弹出的控制台窗口不够用户友好。例如,如果用户输入错误的参数,新窗口将打开,通知用户他们的错误,然后用户必须返回到他们原来的窗口来修复错误,并再次运行命令。基本上我正在寻找更传统的命令行体验。这在我的场景中可能吗?

下一个问题与格式化控制台输出有关。我在这里阅读了几篇关于 SO 和 MSDN 的文章,但我似乎找不到好的答案。我目前正在做这样的事情:

 Console.WriteLine("{0,0}\t\t{1,10}", item.Key, item.Value);

这工作得很好,但 item.Value 中的值完全有可能是几行长,从而换行多行。我正在寻找一种更传统的“表格”布局,其中 item.Value 的文本仍会换行但仅限于其自己的列而不是在 item.Key 的值下方换行。这可能吗?如果可能,最好的方法是什么?

谢谢!

最佳答案

我认为AttachConsole是你要找的。 Pinvoke - AttachConsole包含正确的签名和样本。下面从 www.pinvoke.net 复制的签名:

[DllImport("kernel32.dll", SetLastError = true)]
  static extern bool AttachConsole(uint dwProcessId);

...(!AttachConsole(ATTACH_PARENT_PROCESS)...

关于c# - 控制台输出格式和控制台分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13346326/

相关文章:

c# - C#SmtpClient编程如何设置中文附件文件名?

c# - 将 MenuItem 添加到控制台应用程序中 TrayIcon 的上下文菜单

wcf - IIS 托管应用程序中的控制台输出在哪里?

windows - Ruby 键盘事件处理

c# - 实现命令行标志时,我应该使用正斜杠 (/) 还是连字符 (-) 作为前缀?

c# - 大地址感知 Visual Studio 2015 C#

c# - 使用 Entity Framework 6 的 MySQL 的正确提供程序定义是什么?

c# - 定义 "custom"整数类型?

c# - 基于类型重载泛型类的构造函数

c# - 保持将使用任务计划程序运行的控制台应用程序更新