ben*_*ben 13 c# wpf console command-line
嗨,我知道如何写入控制台,但如果我在程序中写入控制台并从命令行调用我的程序,它将不会显示任何内容.
当我说Console.WriteLine或Console.Out.Writeline ir打印到调用它的命令提示符而不是其他地方时,我该怎么做呢?
我再一次知道怎么做Console.WriteLine所以它不是那样的:-p除非我做错了.
从我可以告诉它可能与Console.SetOut(TextWriter t)有关
这是一个WPF应用程序,我需要它将其数据发布到命令行,同时仍然在启动时保留GUI.我已经三次检查并且我的代码点击了打印行,我实际上可以看到正在打印到Visual Studio输出窗口的行,当我在没有VS的情况下手动运行它时,它不会显示在命令行中.
如果可能,我需要有条件地拥有控制台显示器.即,如果从命令行(或甚至使用命令参数)运行,则显示或发布到提示符,否则不显示.
Ray*_*rns 32
这实际上是微不足道的:
public void WriteToConsole(string message)
{
AttachConsole(-1);
Console.WriteLine(message);
}
[DllImport("Kernel32.dll")]
public static extern bool AttachConsole(int processId);
Run Code Online (Sandbox Code Playgroud)
如果您的程序是从命令行启动的,则此方法会将您的消息写入控制台,否则它将不执行任何操作.
如果要在未从命令行启动时使用备用输出机制,可以这样做:
public void WriteToConsole(string message)
{
_connected = _connected || AttachConsole(-1);
if(_connected)
Console.WriteLine("Hello");
else
... other way to output message ...
}
bool _connected;
[DllImport("Kernel32.dll")]
public static extern bool AttachConsole(int processId);
Run Code Online (Sandbox Code Playgroud)
Ree*_*sey -1
将项目类型设置为“控制台应用程序”而不是“Windows 应用程序”。这将导致应用程序附加到启动它的控制台(如果还没有控制台,则创建一个控制台)。