vc控制台程序事件

BOOL WINAPI ConsoleHandler(DWORD CEvent)
 {
  DWORD e = 0;
  switch (CEvent)
  {
  case CTRL_C_EVENT:
   e = CTRL_C_EVENT;
   break;
  case CTRL_BREAK_EVENT:
   e = CTRL_BREAK_EVENT;
   break;
  case CTRL_CLOSE_EVENT:
   e = CTRL_CLOSE_EVENT;
   break;
  case CTRL_LOGOFF_EVENT:
   break;
  case CTRL_SHUTDOWN_EVENT:
   break;
  }
  return true;
 }
 int main(int argc, char* argv[])
 {
  if  (SetConsoleCtrlHandler((PHANDLER_ROUTINE)ConsoleHandler, TRUE) == FALSE)
  {
   //安装失败
   return -1;
  }
  GenerateConsoleCtrlEvent(CTRL_C_EVENT, 0); //手工产生一事件
 }
CTRL_C_EVENT
 一��Ctrl + C的信�被接收,�信�或�碜枣I�P,或�碜�GenerateConsoleCtrlEvent 函��
 CTRL_BREAK_EVENT
 一�� Ctrl + Break 信�被接收,�信�或�碜枣I�P,或�碜�GenerateConsoleCtrlEvent 函��
 CTRL_CLOSE_EVENT
 ��用�粝到y�P�]Console�r,系�y���l送此信�到此
 CTRL_LOGOFF_EVENT
 ��用�敉顺鱿到y�r系�y���l送�@��信��o所有的Console程序。�信�不能�@示是哪��用�敉顺觥�
 CTRL_SHUTDOWN_EVENT
 ��系�y�⒁��P�]�r���l送此信�到所有Console程序。
 
 在程序中,HandlerRoutine接收到上面那些事件的�r候就可以�M行相��的�理或忽略�事件。
  如果�x�窈雎栽�事件,�tHandlerRoutine必�返回FALSE,否�t返回TRUE。
 我��用SetConsoleCtrlHandler安�bHandlerRoutine�r,Add�����O��TRUE,
  想要�h除已�安�b的HandlerRoutine,�再用�@��函�担�只需把Add�O��FALSE即可。
 另外,得用GenerateConsoleCtrlEvent函�悼梢援b生CTRL_C_EVENT和CTRL_BREAK_EVENT事件,
  利用�@��函�滴��就可以在我��程序中更加巧妙�`活的控制程序了。

你可能感兴趣的:(职场,VC,控制台,休闲)