|
|
1.1 ! root 1: #include <windows.h> ! 2: #include <string.h> ! 3: #include "console.h" ! 4: ! 5: HANDLE hConsole; /* current console output handle */ ! 6: ! 7: /******************************************************************* ! 8: * FUNCTION: handler_routine(DWORD dwCtrlType) * ! 9: * * ! 10: * PURPOSE: this is the control handler routine activated by ctrl+c * ! 11: * or ctrl+break keys * ! 12: * * ! 13: * INPUT: the type of control event * ! 14: *******************************************************************/ ! 15: ! 16: BOOL handler_routine(DWORD dwCtrlType) ! 17: { ! 18: CHAR szTemp[64]; ! 19: ! 20: /* print out what control event was received to the current console */ ! 21: switch(dwCtrlType) ! 22: { ! 23: case CTRL_C_EVENT: ! 24: strcpy(szTemp, "CTRL_C_EVENT"); ! 25: break; ! 26: case CTRL_BREAK_EVENT: ! 27: strcpy(szTemp, "CTRL_BREAK_EVENT"); ! 28: break; ! 29: default: ! 30: strcpy(szTemp, "unknown event"); ! 31: break; ! 32: } ! 33: strcat(szTemp, " detected"); ! 34: myPuts(hConsole, szTemp); ! 35: return(TRUE); ! 36: } ! 37: ! 38: ! 39: /********************************************************************* ! 40: * FUNCTION: demoSetCtrlHandler(HANDLE hConOut) * ! 41: * * ! 42: * PURPOSE: demonstrate SetConsoleCtrlHandler by setting a ctrl+break * ! 43: * and ctrl+c handler. When the user hits either one of * ! 44: * these keys, a message is printed to the console * ! 45: * indicating the event. * ! 46: * * ! 47: * INPUT: the output handle to write to * ! 48: *********************************************************************/ ! 49: ! 50: void demoSetCtrlHandler(HANDLE hConOut) ! 51: { ! 52: BOOL bSuccess; ! 53: ! 54: setConTitle(__FILE__); ! 55: hConsole = hConOut; /* set global console output handle for handler */ ! 56: myPuts(hConOut, "Let's install a ctrl+c and ctrl+break handler for this\n" ! 57: "process. Hit ctrl+c and ctrl+break a few times to test\n" ! 58: "the handler. Hit enter to return..."); ! 59: /* set handler for this process */ ! 60: bSuccess = SetConsoleCtrlHandler(handler_routine, TRUE); ! 61: PERR(bSuccess, "SetConsoleCtrlHandler"); ! 62: /* wait for user to hit enter */ ! 63: while (myGetchar() != 0xd) ! 64: ; ! 65: /* remove our handler from the list of handlers */ ! 66: bSuccess = SetConsoleCtrlHandler(handler_routine, FALSE); ! 67: PERR(bSuccess, "SetConsoleCtrlHandler"); ! 68: return; ! 69: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.