有没有办法从WinForms/WPF应用程序启动/打开控制台?
问题描述:
我有一个Windows窗体应用程序,我想打开一个控制台按需(当我按下按钮的例子),我可以使用标准控制台类进行交互。有没有办法做到这一点?有没有办法从WinForms/WPF应用程序启动/打开控制台?
答
是的,你需要与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()创建与您的应用程序关联的控制台窗口。
谢谢。有效。现在我有另一个问题。如果产生的控制台关闭,我的整个应用程序就会关闭。有没有办法阻止? – 2009-12-23 15:39:56
不容易。您可以尝试使用本文中的技术禁用关闭功能:http://*.com/questions/877839/stop-a-net-console-app-from-being-closed/878334#878334 – Paolo 2009-12-23 16:07:01