C#添加注销关闭事件捕获

有的时候程序在运行时需要获取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:代表关机事件

你可能感兴趣的:(windows,api,C#)