有没有想过如何从Windows应用程序写入单独的控制台窗口而不是写入日志文件?您可能需要这样做有很多原因 - 主要与调试有关。
答案 0 :(得分:12)
要以编程方式执行此操作,您可以在自己的代码中启用相应的Win32控制台功能(例如AllocConsole
以创建您自己的或AttachConsole
以使用其他进程)。通过这种方式,您可以最好地控制实际情况。
如果您可以在流程的整个生命周期内将控制台窗口与其他UI一起打开,则只需在Visual Studio中更改项目属性,然后选择“控制台应用程序”,简单如下:
答案 1 :(得分:3)
如果您有控制台应用程序,请执行
System.Console.WriteLine("What ever you want");
如果您有表单应用程序,则需要先创建控制台:
http://www.csharp411.com/console-output-from-winforms-application/
答案 2 :(得分:3)
以下是您的操作方法: kernel32.dll中提供了预定义的API,允许您写入控制台。 以下显示了该功能的示例用法。
private void button1_Click(object sender, EventArgs e)
{
new Thread(new ThreadStart(delegate()
{
AllocConsole();
for (uint i = 0; i < 1000000; ++i)
{
Console.WriteLine("Hello " + i);
}
FreeConsole();
})).Start();
}
您需要从kernel32.dll导入AllocConsole和FreeConsole API。
[DllImport("kernel32.dll")]
public static extern bool AllocConsole();
[DllImport("kernel32.dll")]
public static extern bool FreeConsole();
如果你只想在调试时使用它,你总是可以使它成为条件。
private void button1_Click(object sender, EventArgs e)
{
new Thread(new ThreadStart(delegate()
{
AllocateConsole();
for (uint i = 0; i < 1000000; ++i)
{
Console.WriteLine("Hello " + i);
}
DeallocateConsole();
})).Start();
}
[Conditional("DEBUG")]
private void AllocateConsole()
{
AllocConsole();
}
[Conditional("DEBUG")]
private void DeallocateConsole()
{
FreeConsole();
}
答案 3 :(得分:2)
您可以使用kernel32.dll来控制Windows窗体应用程序的输出。有关详细信息,请查看this article。