2009-02-10 180 views
3

我知道GUI有覆蓋控制檯關閉

private void Form1_Closing(object sender, System.ComponentModel.EventArgs e) 
{ 
    //do stuff 
}
但是我怎麼能在控制檯應用程序中做同樣的事情? 。

C#/ NET3.5

回答

5

方法如下:

// Declare the SetConsoleCtrlHandler function 
// as external and receiving a delegate. 
[DllImport("Kernel32")] 
public static extern bool SetConsoleCtrlHandler(HandlerRoutine Handler, bool Add); 

// A delegate type to be used as the handler routine 
// for SetConsoleCtrlHandler. 
public delegate bool HandlerRoutine(CtrlTypes CtrlType); 

// An enumerated type for the control messages 
// sent to the handler routine. 
public enum CtrlTypes 
{ 
    CTRL_C_EVENT = 0, 
    CTRL_BREAK_EVENT, 
    CTRL_CLOSE_EVENT, 
    CTRL_LOGOFF_EVENT = 5, 
    CTRL_SHUTDOWN_EVENT 
} 

private static bool ConsoleCtrlCheck(CtrlTypes ctrlType) 
{ 
    // Put your own handler here 
    return true; 
} 

... 

SetConsoleCtrlHandler(new HandlerRoutine(ConsoleCtrlCheck), true); 
+0

我在哪裏可以閱讀更多關於這個?我完全不知道如何使用它。 – Dacto 2009-02-10 08:09:47