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

王朝other·作者佚名  2008-05-19
宽屏版  字体: |||超大  

如何捕捉控制台程序的关闭事件。最近要做个控制台程序,在用户关闭程序的时候要做些处理,但控制台程序却没有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;

}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有