如何捕捉控制台程序的关闭事件最近要做个控制台程序在用户关闭程序的时候要做些处理但控制台程序却没有WinForm的Closing或Closed事件想想只能用API才捕捉消息来实现了代码如下 using System; using SystemWindowsForms; using SystemDiagnostics; using SystemRuntimeInteropServices; namespace ConsoleColsed { public delegate bool ConsoleCtrlDelegate(int dwCtrlType); public class ClsMain { [DllImport(kerneldll)] private static extern bool SetConsoleCtrlHandler(ConsoleCtrlDelegate HandlerRoutinebool Add); //当用户关闭Console时系统会发送次消息 private const int CTRL_CLOSE_EVENT = ; [stathread] static void Main() { ClsMain cls=new ClsMain(); } public ClsMain() { // 用API安装事件处理 ConsoleCtrlDelegate newDelegate=new ConsoleCtrlDelegate(HandlerRoutine); bool bRet=SetConsoleCtrlHandler(newDelegatetrue); if(bRet==false) //安装事件处理失败 { DebugWriteLine(失败); } else { ConsoleWriteLine(ok); ConsoleRead(); } } /**//// <summary> /// 处理消息的事件 /// </summary> private static bool HandlerRoutine(int CtrlType) { switch(CtrlType) { case CTRL_CLOSE_EVENT: //用户要关闭Console了 DebugWriteLine(Close); break; } return false; } } } |