熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

如何捕捉控制台程序的關閉事件

2013-11-13 09:49:10  來源: .NET編程 
如何捕捉控制台程序的關閉事件最近要做個控制台程序在用戶關閉程序的時候要做些處理但控制台程序卻沒有WinForm的Closing或Closed事件想想只能用API才捕捉消息來實現了代碼如下

  using System;
using SystemWindowsForms;
using SystemDiagnostics;
using SystemRuntimeInteropServices;

  namespace ConsoleColsed
{

  public delegate bool ConsoleCtrlDelegate(int dwCtrlType);

  public class ClsMain

 [DllImport(kerneldll)]
 private static extern bool SetConsoleCtrlHandler(ConsoleCtrlDelegate HandlerRoutinebool Add);
 //當用戶關閉Console時系統會發送次消息
 private const int CTRL_CLOSE_EVENT = ;

  [stathread]
 static void Main()
 {
  ClsMain cls=new ClsMain();     
 }
 
 public ClsMain()
 {
  // 用API安裝事件處理
  ConsoleCtrlDelegate newDelegate=new ConsoleCtrlDelegate(HandlerRoutine);
               bool bRet=SetConsoleCtrlHandler(newDelegatetrue);
  if(bRet==false)  //安裝事件處理失敗
  {
   DebugWriteLine(失敗);
  }
  else
  {
   ConsoleWriteLine(ok);
   ConsoleRead();
  }
         }
   /**//// <summary>
   /// 處理消息的事件
   /// </summary>
   private static bool HandlerRoutine(int CtrlType)
   {
 switch(CtrlType)
 {
  case CTRL_CLOSE_EVENT:       //用戶要關閉Console了
   DebugWriteLine(Close);
   break;
 }

  return false;
    }
}
}


From:http://tw.wingwit.com/Article/program/net/201311/11665.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.