如何动态隐藏/显示 WPF 应用程序的控制台窗口

你曾经是否想过在 WPF 应用程序运行起来后,可以动态打开/关闭控制台窗体。也就是说,你可以在 WPF 应用程序里,留一个后门,用于调试程序。在需要时,打开控制台窗口,查看后台监控数据;不需要时,关闭控制台窗口。

下面的方法应该可以满足你的需求:

<OutputType>Exe</OutputType>
public static class NativeConsole
{
    [DllImport("kernel32.dll")]
    public static extern IntPtr GetConsoleWindow();

    [DllImport("user32.dll")]
    public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

    public const int SW_HIDE = 0;
    public const int SW_SHOW = 5;

    public static void Show()
    {
        var handle = GetConsoleWindow();
        ShowWindow(handle, SW_SHOW);
    }

    public static void Hide()
    {
        var handle = GetConsoleWindow();
        ShowWindow(handle, SW_HIDE);
    }
}
public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);

        //隐藏控制台窗口
        NativeConsole.Hide();
    }
}

显示控制台窗口方法:

NativeConsole.Show();

隐藏控制台窗口方法:

NativeConsole.Hide();