【发布时间】:2009-12-23 15:26:56
【问题描述】:
我有一个 Windows 窗体应用程序,我想按需打开一个控制台(例如,当我按下按钮时),我可以使用标准控制台类与之交互。有没有办法做到这一点?
【问题讨论】:
我有一个 Windows 窗体应用程序,我想按需打开一个控制台(例如,当我按下按钮时),我可以使用标准控制台类与之交互。有没有办法做到这一点?
【问题讨论】:
是的,您需要一点点与 Win32 的互操作才能做到这一点。
public class ConsoleHelper
{
public static int Create()
{
if (AllocConsole())
return 0;
else
return Marshal.GetLastWin32Error();
}
public static int Destroy()
{
if (FreeConsole())
return 0;
else
return Marshal.GetLastWin32Error();
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage"), SuppressUnmanagedCodeSecurity]
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool AllocConsole();
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage"), SuppressUnmanagedCodeSecurity]
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool FreeConsole();
}
现在您可以调用 Create() 来创建与您的应用关联的控制台窗口。
【讨论】:
查看 Eric Petroelje 的 answer here。它显示了可以在运行时创建控制台的代码。
【讨论】: