C# 超控控制台关闭
我知道GUI有C# 超控控制台关闭,c#,console,overriding,C#,Console,Overriding,我知道GUI有 private void Form1_Closing(object sender, System.ComponentModel.EventArgs e) { //do stuff } 但是,在控制台应用程序中如何做同样的事情呢 C#/.NET3.5以下是如何: // Declare the SetConsoleCtrlHandler function // as external and receiving a delegate. [DllImport("Kernel32")
private void Form1_Closing(object sender, System.ComponentModel.EventArgs e)
{
//do stuff
}
但是,在控制台应用程序中如何做同样的事情呢
C#/.NET3.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);
我在哪里可以读到更多关于这方面的信息?我不完全理解如何使用它。请阅读MSDN上的P/Invoke(或PInvoke)。setConsoletrlHandler()上的文档也在那里。好的,我有点了解,但我仍然不知道如何阻止CTRL\u CLOSE\u事件,我尝试在捕捉到该事件时返回false/true,但没有成功。