最近要做个控制台程序,在用户关闭程序的时候要做些处理,但控制台程序却没有WinForm的Closing或Closed事件,想想只能用API才捕捉消息来实现了,代码如下:


1c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序using System;

 2c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序using System.Windows.Forms;

 3c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序using System.Diagnostics;

 4c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序using System.Runtime.InteropServices;

 5c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序

 6c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序namespace ConsoleColsed

 7c#  如何捕捉控制台程序的关闭事件。(转)_javascript_07{

 8c#  如何捕捉控制台程序的关闭事件。(转)_sed_08

 9c#  如何捕捉控制台程序的关闭事件。(转)_sed_08public delegate bool ConsoleCtrlDelegate(int dwCtrlType);

10c#  如何捕捉控制台程序的关闭事件。(转)_sed_08

11c#  如何捕捉控制台程序的关闭事件。(转)_sed_08public class ClsMain 

12c#  如何捕捉控制台程序的关闭事件。(转)_关闭程序_12{  

13c#  如何捕捉控制台程序的关闭事件。(转)_sed_08 [DllImport("kernel32.dll")]

14c#  如何捕捉控制台程序的关闭事件。(转)_sed_08 private static extern bool SetConsoleCtrlHandler(ConsoleCtrlDelegate HandlerRoutine,bool Add);

15c#  如何捕捉控制台程序的关闭事件。(转)_sed_08 //当用户关闭Console时,系统会发送次消息

16c#  如何捕捉控制台程序的关闭事件。(转)_sed_08 private const int CTRL_CLOSE_EVENT = 2;

17c#  如何捕捉控制台程序的关闭事件。(转)_sed_08

18c#  如何捕捉控制台程序的关闭事件。(转)_sed_08 [STAThread]

19c#  如何捕捉控制台程序的关闭事件。(转)_sed_08 static void Main() 

20c#  如何捕捉控制台程序的关闭事件。(转)_关闭程序_12 {

21c#  如何捕捉控制台程序的关闭事件。(转)_sed_08  ClsMain cls=new ClsMain();      

22c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序_22 }

23c#  如何捕捉控制台程序的关闭事件。(转)_sed_08  

24c#  如何捕捉控制台程序的关闭事件。(转)_sed_08 public ClsMain()

25c#  如何捕捉控制台程序的关闭事件。(转)_关闭程序_12 {

26c#  如何捕捉控制台程序的关闭事件。(转)_sed_08  // 用API安装事件处理

27c#  如何捕捉控制台程序的关闭事件。(转)_sed_08  ConsoleCtrlDelegate newDelegate=new ConsoleCtrlDelegate(HandlerRoutine);

28c#  如何捕捉控制台程序的关闭事件。(转)_sed_08               bool bRet=SetConsoleCtrlHandler(newDelegate,true);

29c#  如何捕捉控制台程序的关闭事件。(转)_sed_08  if(bRet==false)  //安装事件处理失败

30c#  如何捕捉控制台程序的关闭事件。(转)_关闭程序_12  {

31c#  如何捕捉控制台程序的关闭事件。(转)_sed_08   Debug.WriteLine("失败");

32c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序_22  }

33c#  如何捕捉控制台程序的关闭事件。(转)_sed_08  else

34c#  如何捕捉控制台程序的关闭事件。(转)_关闭程序_12  {

35c#  如何捕捉控制台程序的关闭事件。(转)_sed_08   Console.WriteLine("ok");

36c#  如何捕捉控制台程序的关闭事件。(转)_sed_08   Console.Read();

37c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序_22  }

38c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序_22         }

39c#  如何捕捉控制台程序的关闭事件。(转)_关闭程序_12   /// <summary>

40c#  如何捕捉控制台程序的关闭事件。(转)_sed_08   /// 处理消息的事件

41c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序_22   /// </summary>

42c#  如何捕捉控制台程序的关闭事件。(转)_sed_08   private static bool HandlerRoutine(int CtrlType)

43c#  如何捕捉控制台程序的关闭事件。(转)_关闭程序_12   {

44c#  如何捕捉控制台程序的关闭事件。(转)_sed_08 switch(CtrlType)

45c#  如何捕捉控制台程序的关闭事件。(转)_关闭程序_12 {

46c#  如何捕捉控制台程序的关闭事件。(转)_sed_08  case CTRL_CLOSE_EVENT:       //用户要关闭Console了

47c#  如何捕捉控制台程序的关闭事件。(转)_sed_08   Debug.WriteLine("Close");

48c#  如何捕捉控制台程序的关闭事件。(转)_sed_08   break;

49c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序_22 }

50c#  如何捕捉控制台程序的关闭事件。(转)_sed_08

51c#  如何捕捉控制台程序的关闭事件。(转)_sed_08 return false;

52c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序_22    }

53c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序_22}

54c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序_54}

55c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序



[作者]:BearRui(AK-47)

[博客]: ​​javascript:void(0)​

[声明]:本博所有文章版权归作者所有(除特殊说明以外),转载请注明出处.


最近要做个控制台程序,在用户关闭程序的时候要做些处理,但控制台程序却没有WinForm的Closing或Closed事件,想想只能用API才捕捉消息来实现了,代码如下:


1c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序using System;

 2c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序using System.Windows.Forms;

 3c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序using System.Diagnostics;

 4c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序using System.Runtime.InteropServices;

 5c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序

 6c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序namespace ConsoleColsed

 7c#  如何捕捉控制台程序的关闭事件。(转)_javascript_07{

 8c#  如何捕捉控制台程序的关闭事件。(转)_sed_08

 9c#  如何捕捉控制台程序的关闭事件。(转)_sed_08public delegate bool ConsoleCtrlDelegate(int dwCtrlType);

10c#  如何捕捉控制台程序的关闭事件。(转)_sed_08

11c#  如何捕捉控制台程序的关闭事件。(转)_sed_08public class ClsMain 

12c#  如何捕捉控制台程序的关闭事件。(转)_关闭程序_12{  

13c#  如何捕捉控制台程序的关闭事件。(转)_sed_08 [DllImport("kernel32.dll")]

14c#  如何捕捉控制台程序的关闭事件。(转)_sed_08 private static extern bool SetConsoleCtrlHandler(ConsoleCtrlDelegate HandlerRoutine,bool Add);

15c#  如何捕捉控制台程序的关闭事件。(转)_sed_08 //当用户关闭Console时,系统会发送次消息

16c#  如何捕捉控制台程序的关闭事件。(转)_sed_08 private const int CTRL_CLOSE_EVENT = 2;

17c#  如何捕捉控制台程序的关闭事件。(转)_sed_08

18c#  如何捕捉控制台程序的关闭事件。(转)_sed_08 [STAThread]

19c#  如何捕捉控制台程序的关闭事件。(转)_sed_08 static void Main() 

20c#  如何捕捉控制台程序的关闭事件。(转)_关闭程序_12 {

21c#  如何捕捉控制台程序的关闭事件。(转)_sed_08  ClsMain cls=new ClsMain();      

22c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序_22 }

23c#  如何捕捉控制台程序的关闭事件。(转)_sed_08  

24c#  如何捕捉控制台程序的关闭事件。(转)_sed_08 public ClsMain()

25c#  如何捕捉控制台程序的关闭事件。(转)_关闭程序_12 {

26c#  如何捕捉控制台程序的关闭事件。(转)_sed_08  // 用API安装事件处理

27c#  如何捕捉控制台程序的关闭事件。(转)_sed_08  ConsoleCtrlDelegate newDelegate=new ConsoleCtrlDelegate(HandlerRoutine);

28c#  如何捕捉控制台程序的关闭事件。(转)_sed_08               bool bRet=SetConsoleCtrlHandler(newDelegate,true);

29c#  如何捕捉控制台程序的关闭事件。(转)_sed_08  if(bRet==false)  //安装事件处理失败

30c#  如何捕捉控制台程序的关闭事件。(转)_关闭程序_12  {

31c#  如何捕捉控制台程序的关闭事件。(转)_sed_08   Debug.WriteLine("失败");

32c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序_22  }

33c#  如何捕捉控制台程序的关闭事件。(转)_sed_08  else

34c#  如何捕捉控制台程序的关闭事件。(转)_关闭程序_12  {

35c#  如何捕捉控制台程序的关闭事件。(转)_sed_08   Console.WriteLine("ok");

36c#  如何捕捉控制台程序的关闭事件。(转)_sed_08   Console.Read();

37c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序_22  }

38c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序_22         }

39c#  如何捕捉控制台程序的关闭事件。(转)_关闭程序_12   /// <summary>

40c#  如何捕捉控制台程序的关闭事件。(转)_sed_08   /// 处理消息的事件

41c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序_22   /// </summary>

42c#  如何捕捉控制台程序的关闭事件。(转)_sed_08   private static bool HandlerRoutine(int CtrlType)

43c#  如何捕捉控制台程序的关闭事件。(转)_关闭程序_12   {

44c#  如何捕捉控制台程序的关闭事件。(转)_sed_08 switch(CtrlType)

45c#  如何捕捉控制台程序的关闭事件。(转)_关闭程序_12 {

46c#  如何捕捉控制台程序的关闭事件。(转)_sed_08  case CTRL_CLOSE_EVENT:       //用户要关闭Console了

47c#  如何捕捉控制台程序的关闭事件。(转)_sed_08   Debug.WriteLine("Close");

48c#  如何捕捉控制台程序的关闭事件。(转)_sed_08   break;

49c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序_22 }

50c#  如何捕捉控制台程序的关闭事件。(转)_sed_08

51c#  如何捕捉控制台程序的关闭事件。(转)_sed_08 return false;

52c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序_22    }

53c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序_22}

54c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序_54}

55c#  如何捕捉控制台程序的关闭事件。(转)_控制台程序