按语:
ctrl+c 产生CTRL_C_EVENT
ctrl+Break :CTRL_BREAK_EVENT
点x : CTRL_CLOSE_EVENT:
#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
" );
return( true );
// ctrl-close: confirm that the user wants to exit.
case CTRL_CLOSE_EVENT:
printf( "ctrl-close event
" );
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
" );
return false;
case CTRL_SHUTDOWN_EVENT:
printf( "ctrl-shutdown event
" );
return false;
default:
return false;
}
}
void 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");
}
https://bbs.csdn.net/topics/370126796