免费加盟一件代发货源网站,担路网做网站多少钱,网站建设哪家合适,公众号开发建设http://www.groad.net/bbs/thread-8253-1-1.html 当你在命令行里工作时#xff0c;经常会输入 Ctrl-C 这个组合键以停止程序的运行。SetConsoleCtrlHandler() 函数可以让一个或多个特定函数在接收到 Ctrl-C, Ctrl-break 这些与控制台有关的信号时得到执行。 BOOL WINAPI SetCo…http://www.groad.net/bbs/thread-8253-1-1.html 当你在命令行里工作时经常会输入 Ctrl-C 这个组合键以停止程序的运行。SetConsoleCtrlHandler() 函数可以让一个或多个特定函数在接收到 Ctrl-C, Ctrl-break 这些与控制台有关的信号时得到执行。 BOOL WINAPI SetConsoleCtrlHandler( _In_opt_ PHANDLER_ROUTINE HandlerRoutine, _In_ BOOL Add); 复制代码 函数有两个参数第 1 个参数是要安装的信号处理函数当第 2 个参数 Add 设置为 TRUE 时那么就安装第 1 个参数所表示的处理函数否则就从控制台控制例程列表中将之删除。需要注意的是这里没有指定信号测试到底是什么信号是处理程序所负责的事情。函数的返回值是个布尔值当函数执行成功时返回非 0 值反之返回 0 值具体的出错原因可以用 GetLastError() 函数来获得。如果第 1 个参数设置为 NULL且 Add 为 TRUE 时那么 Ctrl-C 信号会被忽略。如果已经使用 SetConsoleMode() 设置了 ENABLE_PROCESSED_INPUT 标志那么系统会将 Ctrl-C 作为键盘输入处理而不是作为信号处理。处理程序例程实际上是以进程内的独立线程执行的正常的程序将继续操作。处理程序 BOOL WINAPI HandlerRoutine( _In_ DWORD dwCtrlType); 复制代码 带有一个 DWORD 类型值 dwCtrlType 它用来标识信号或事件可以是以下 5 个值之一1) CTRL_C_EVENT 表示键盘输入了 Ctrl-C 。2) CTRL_CLOSE_EVENT 表示控制台窗口正在被关闭。3) CTRL_BREAK_EVENT 表示 Ctrl_break 信号。4) CTRL_LOGOFF_EVENT 表示用户正在注销。5) CTRL_SHUTDOWN_EVENT 表示 Windows 正在关闭。信号处理程序可以像异常或终止程序那样执行清理操作。当信号处理程序返回 TRUE 时表示函数已经处理了信号若是返回 FALSE 那么就去执行列表中下一个处理程序函数。信号处理程序与设置顺序相反的顺序执行也就是说最后一个设置程序将被首先执行而系统的处理程序在最后执行。转载于:https://www.cnblogs.com/NickyYe/p/5512084.html