zoukankan      html  css  js  c++  java
  • c++控制台也能捕捉事件喽,防止误关闭的函数~~

    #include <windows.h> 
    #include <stdio.h> 
    bool ctrlhandler( DWORD fdwctrltype ) 
    { 
        switch( fdwctrltype ) 
        { 
        // handle the ctrl-c signal. 
        case CTRL_C_EVENT: 
            printf( "ctrl-c event
    
    " );
              _sleep(2000);
            return( true );
        // ctrl-close: confirm that the user wants to exit. 
        case CTRL_CLOSE_EVENT: 
            printf( "ctrl-close event
    
    " );
              _sleep(2000);
            return( true ); 
        // pass other signals to the next handler. 
        case CTRL_BREAK_EVENT: 
            printf( "ctrl-break event
    
    " );
            return false; 
        case CTRL_LOGOFF_EVENT: 
            printf( "ctrl-logoff event
    
    " );
              _sleep(2000);
            return false; 
        case CTRL_SHUTDOWN_EVENT: 
            printf( "ctrl-shutdown event
    
    " );
            _sleep(2000);
            return false; 
        default: 
            return false; 
        } 
    } 
    int main( void ) 
    { 
        if( SetConsoleCtrlHandler( (PHANDLER_ROUTINE) ctrlhandler, true ) ) 
        { 
            printf( "
    the control handler is installed.
    " ); 
            printf( "
     -- now try pressing ctrl+c or ctrl+break, or" ); 
            printf( "
     try logging off or closing the console...
    " ); 
            printf( "
    (...waiting in a loop for events...)
    
    " ); 
           while( 1 ){ Sleep(100);} 
        } 
    else 
        printf( "
    error: could not set control handler"); 
    }
    View Code

     CTRL_C_EVENT
    一個Ctrl + C的信號被接收,該信號或來自鍵盤,或來自GenerateConsoleCtrlEvent
    函數

    CTRL_BREAK_EVENT
    一個 Ctrl + Break
    信號被接收,該信號或來自鍵盤,或來自GenerateConsoleCtrlEvent
    函數

    CTRL_CLOSE_EVENT
    當用戶系統關閉Console時,系統會發送此信號到此

    CTRL_LOGOFF_EVENT
    當用戶退出系統時系統會發送這個信號給所有的Console程序。該信號不能顯示是哪個用戶退出。

    CTRL_SHUTDOWN_EVENT
    當系統將要關閉時會發送此信號到所有Console程序。

  • 相关阅读:
    linux学习笔记--20150122
    破解LR11 sentinel stage failed
    Linux部署环境初学(Resin、jdk)
    MongoDB操作
    TestNG
    在iOS8 下用Swift 创建自定义的键盘
    iOS 8下简单,可交互式的通知
    设计模式:策略模式
    用Swift创建一个自定义,可调整的控件
    iOS7状态栏上有趣的渐变遮罩
  • 原文地址:https://www.cnblogs.com/Skyxj/p/3390985.html
Copyright © 2011-2022 走看看