有的时候程序在运行时需要获取windows的关机或注销事件以处理一些后续问题这里提供一个方法,使用SetConsoleCtrlHandler这个API获取系统消息。
函数原型
[DllImport("kernel32.dll")]
private static extern bool SetConsoleCtrlHandler(ConsoleDelegate HandlerRoutine, bool add);
第一个参数是个委托类型可以定义为:
public delegate bool ConsoleDelegate(int type);
第二个参数设置为true即可
当系统发生类似关机,注销事件时会向所注册的委托里传送相关标志,即委托类型中int型参数。
2:代表关闭事件,这个事件可以用在一些Console程序上因为是命令行程序没有关闭事件,可以使用这个来捕获。
5:代表注销事件
6:代表关机事件
函数原型
[DllImport("kernel32.dll")]
private static extern bool SetConsoleCtrlHandler(ConsoleDelegate HandlerRoutine, bool add);
第一个参数是个委托类型可以定义为:
public delegate bool ConsoleDelegate(int type);
第二个参数设置为true即可
当系统发生类似关机,注销事件时会向所注册的委托里传送相关标志,即委托类型中int型参数。
2:代表关闭事件,这个事件可以用在一些Console程序上因为是命令行程序没有关闭事件,可以使用这个来捕获。
5:代表注销事件
6:代表关机事件