zoukankan      html  css  js  c++  java
  • SetConsoleCtrlHandler演示

    #include "stdafx.h"
    #include <Windows.h>




    static BOOL WINAPI Handler(DWORD cntrlEvent);
    static BOOL exitFlag = FALSE;

    int _tmain(int argc, LPTSTR argv[])

    /* Beep periodically until signaled to stop. */
    {
            /* Add an event handler. */
        if (SetConsoleCtrlHandler(Handler, TRUE)==FALSE)
            printf("Unable to install handler! ");
        
        while (!exitFlag) { /* This flag is detected right after a beep, before a handler exits */
            Sleep(4750); /* Beep every 5 seconds; allowing 250 ms of beep time. */
            Beep(1000 /* Frequency */, 250 /* Duration */);
        }
        _tprintf(_T("Stopping the main program as requested. "));
        return 0;
    }    

    BOOL WINAPI Handler(DWORD cntrlEvent)
    {
        switch (cntrlEvent) {
            /* The signal timing will determine if you see the second handler message */
            case CTRL_C_EVENT:
                _tprintf(_T("Ctrl-C received by handler. Leaving in 5 seconds or less. "));
                exitFlag = TRUE;
                Sleep(4000); /* Decrease this time to get a different effect */
                _tprintf(_T("Leaving handler in 1 second or less. "));
                return TRUE; /* TRUE indicates that the signal was handled. */
            case CTRL_CLOSE_EVENT:
                _tprintf(_T("Close event received by handler. Leaving the handler in 5 seconds or less. "));
                exitFlag = TRUE;
                Sleep(4000); /* Decrease this time to get a different effect */
                _tprintf(_T("Leaving handler in 1 second or less. "));
                return TRUE; /* Try returning FALSE. Any difference? */
            default:
                _tprintf(_T("Event: %d received by handler. Leaving in 5 seconds or less. "), cntrlEvent);
                exitFlag = TRUE;
                Sleep(4000); /* Decrease this time to get a different effect */
                _tprintf(_T("Leaving handler in 1 seconds or less. "));
                return TRUE; /* TRUE indicates that the signal was handled. */
        }
    }

  • 相关阅读:
    递归练习:走台阶
    递归练习:计算最大公约数和最小公倍数
    递归练习:逆序输出一个十进制数的各位数字
    m4, autoconf
    Makefile 和 CMakeLists.txt
    Java中的String pool
    小米路由Mini刷Breed, 潘多拉和LEDE
    Centos 编译LEDE/OpenWrt
    Centos6下编译安装gcc6.4.0
    IntelliJ IDEA遇到Unable to parse template “Class”错误
  • 原文地址:https://www.cnblogs.com/duyy/p/3659234.html
Copyright © 2011-2022 走看看