3
我知道GUI有覆盖控制台关闭
private void Form1_Closing(object sender, System.ComponentModel.EventArgs e)
{
//do stuff
}
但是我怎么能在控制台应用程序中做同样的事情? 。
C#/ NET3.5
我知道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")]
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);
我在哪里可以阅读更多关于这个?我完全不知道如何使用它。 – Dacto 2009-02-10 08:09:47