天天看点

C#注册控件处理程序(SetConsoleCtrlHandler)函数示例 控制台关闭事件改写

添加或删除应用程序定义的HandlerRoutine从调用进程的处理函数列表功能。

Win32 API

功能:

函数原型:

BOOL SetConsoleCtrlHandler(

PHANDLER_ROUTINE HandlerRoutine, // 回调函数

BOOL Add // 表示添加还是删除

);

返回值:BOOL类型

参数

参数HandlerRoutine:一个应用程序定义的指针HandlerRoutine 功能要添加或删除。 这个参数可以是NULL。

参数Add:如果此参数为TRUE,处理程序添加,如果是假的,该处理程序将被删除。

返回值:

如果函数失败,返回值为0.否则,返回一个非0值。 若想获得更多错误信息,调用GetLastError函数 。

说白了,就是一个系统调用。

第一个参数是函数指针,就是上面的那个函数。第二个参数是标志,如果为TRUE那么就安装钩子,如果为FALSE那么删除钩子。

利用Windows API 拦截Console的手动关闭事件的消息,来实现,下面我给出的是一个完整的事例:

参考:http://msdn.microsoft.com/en-us/library/ms686016(v=vs.85).aspx

继续阅读