• 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程序。

  • 相关阅读:
    Java阶段测试题一
    HttpClient配置及运用(一)
    字符串数组及链表的应用:例题
    Java多线程
    String普通方法测试;可变参数
    Java连接mysql数据库
    JS练习
    foreach遍历、包装类、Object类
    Java多态总结
    类的关联,不同类属性的调用
  • 原文地址:https://www.cnblogs.com/Skyxj/p/3390985.html
Copyright © 2020-2023  润新知