用户关闭附加控制台时,Windows窗体应用程序关闭

时间:2013-11-12 10:30:33

标签: c# winforms console

我需要一个具有以下行为的Windows窗体应用程序:

  1. 当程序从资源管理器运行时,没有任何控制台工作(例如)。
  2. 当程序从命令行运行时,从Console.WriteLine()重定向所有文本(因此程序必须将所有输出重定向到parrent控制台)
  3. 为此目的适合以下代码:

    [System.Runtime.InteropServices.DllImport("kernel32.dll")]
    private static extern bool AttachConsole(int dwProcessId);
    
    [STAThread]
    static void Main()
    {
        AttachConsole(-1);
        Console.WriteLine("Test1");
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
        Console.WriteLine("WinForms exit");
    }
    

    但是这里有一个问题:当窗体打开并且用户关闭控制台时,我的程序会自动关闭。我需要在用户关闭控制台后让程序继续运行。我尝试使用SetConsoleCtrlHandler()并在处理程序调用{​​{1}}中但是在调用处理程序之后程序关闭了所有内容:

    FreeConsole()

    如何在用户关闭控制台时阻止关闭Windows窗体应用程序?

1 个答案:

答案 0 :(得分:0)

你可以像

一样抓住Window Closing Event
    private void winMain_Closing(object sender, CancelEventArgs e)
    {
        e.Cancel = true;
    }