- using System.Diagnostics;
- //委托
- public delegate bool ConsoleCtrlDelegate(int dwCtrlType);
- /**/
- /// <summary>
- /// 处理消息的事件
- /// </summary>
- private static bool HandlerRoutine(int CtrlType)
- {
- switch (CtrlType)
- {
- case CTRL_CLOSE_EVENT: //用户要关闭Console了
- Console.WriteLine("System is saving Setting...");
- //do something...
- break;
- }
- return false;
- }
- [DllImport("kernel32.dll")]
- private static extern bool SetConsoleCtrlHandler(ConsoleCtrlDelegate HandlerRoutine, bool Add);
- //当用户关闭Console时,系统会发送次消息
- private const int CTRL_CLOSE_EVENT = 2;
- static void Main(string[] args)
- {
- //绑定控制台关闭事件
- ConsoleCtrlDelegate newDelegate = new ConsoleCtrlDelegate(HandlerRoutine);
- bool bRet = SetConsoleCtrlHandler(newDelegate, true);
- //do something..
- }
不过此事件只在人工干预控制台关闭的时候起作用