技术开发 频道

如何捕捉控制台程序的关闭事件

【IT168技术文档】

    如何捕捉控制台程序的关闭事件。最近要做个控制台程序,在用户关闭程序的时候要做些处理,但控制台程序却没有WinForm的Closing或Closed事件,想想只能用API才捕捉消息来实现了,代码如下:

using System; using System.Windows.Forms; using System.Diagnostics; using System.Runtime.InteropServices; namespace ConsoleColsed { public delegate bool ConsoleCtrlDelegate(int dwCtrlType); public class ClsMain { [DllImport("kernel32.dll")] private static extern bool SetConsoleCtrlHandler(ConsoleCtrlDelegate HandlerRoutine,bool Add); //当用户关闭Console时,系统会发送次消息 private const int CTRL_CLOSE_EVENT = 2; [stathread] static void Main() { ClsMain cls=new ClsMain(); } public ClsMain() { // 用API安装事件处理 ConsoleCtrlDelegate newDelegate=new ConsoleCtrlDelegate(HandlerRoutine); bool bRet=SetConsoleCtrlHandler(newDelegate,true); if(bRet==false) //安装事件处理失败 { Debug.WriteLine("失败"); } else { Console.WriteLine("ok"); Console.Read(); } } /**//// <summary> /// 处理消息的事件 /// </summary> private static bool HandlerRoutine(int CtrlType) { switch(CtrlType) { case CTRL_CLOSE_EVENT: //用户要关闭Console了 Debug.WriteLine("Close"); break; } return false; } } }


0
相关文章