如何捕捉控制台程序的关闭事件。

简介:

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

 1 using System;
 2 using System.Windows.Forms;
 3 using System.Diagnostics;
 4 using System.Runtime.InteropServices;
 5
 6 namespace ConsoleColsed
 7 {
 8
 9public delegate bool ConsoleCtrlDelegate(int dwCtrlType);
10
11public class ClsMain 
12{  
13 [DllImport("kernel32.dll")]
14 private static extern bool SetConsoleCtrlHandler(ConsoleCtrlDelegate HandlerRoutine,bool Add);
15 //当用户关闭Console时,系统会发送次消息
16 private const int CTRL_CLOSE_EVENT = 2;
17
18 [STAThread]
19 static void Main() 
20 {
21  ClsMain cls=new ClsMain();      
22 }

23  
24 public ClsMain()
25 {
26  // 用API安装事件处理
27  ConsoleCtrlDelegate newDelegate=new ConsoleCtrlDelegate(HandlerRoutine);
28               bool bRet=SetConsoleCtrlHandler(newDelegate,true);
29  if(bRet==false)  //安装事件处理失败
30  {
31   Debug.WriteLine("失败");
32  }

33  else
34  {
35   Console.WriteLine("ok");
36   Console.Read();
37  }

38         }

39   /// <summary>
40   /// 处理消息的事件
41   /// </summary>

42   private static bool HandlerRoutine(int CtrlType)
43   {
44 switch(CtrlType)
45 {
46  case CTRL_CLOSE_EVENT:       //用户要关闭Console了
47   Debug.WriteLine("Close");
48   break;
49 }

50
51 return false;
52    }

53}

54}

55









本文转自BearRui(AK-47)博客园博客,原文链接: http://www.cnblogs.com/BearsTaR/archive/2006/04/07/369034.html    ,如需转载请自行联系原作者


相关文章
|
2月前
|
Web App开发 Shell Linux
MacOS环境-手写操作系统-41-mem 第一个控制台程序
MacOS环境-手写操作系统-41-mem 第一个控制台程序
17 1
用c语言输出有颜色的字体 printf输出 控制台程序修改文本位置 设置控制台程序窗口标题
用c语言输出有颜色的字体 printf输出 控制台程序修改文本位置 设置控制台程序窗口标题
|
7月前
|
NoSQL 开发工具 数据库
基于Python开发的学生信息管理系统控制台程序(源码+可执行程序exe文件+程序配置说明书+程序使用说明书)
基于Python开发的学生信息管理系统控制台程序(源码+可执行程序exe文件+程序配置说明书+程序使用说明书)
|
7月前
|
Java 开发工具 数据安全/隐私保护
java商品采购管理系统控制台程序
java商品采购管理系统控制台程序
Visual Studio 2019 设置程序结束控制台不关闭
修改设置使控制台应用运行结束,控制台不自动退出。
492 0
Visual Studio 2019 设置程序结束控制台不关闭
|
Windows
【错误记录】Windows 控制台程序编译报错 ( WINDOWS.H already included. MFC apps must not #include <Windows.h> )
【错误记录】Windows 控制台程序编译报错 ( WINDOWS.H already included. MFC apps must not #include <Windows.h> )
911 0
【错误记录】Windows 控制台程序编译报错 ( WINDOWS.H already included. MFC apps must not #include <Windows.h> )
|
C#
C# 判断当前控制台程序是否重复运行
C# 判断当前控制台程序是否重复运行
169 0
|
C# C++ Windows
C#工程中输出类型转换以及程序运行后控制台窗口不退出设置
C#工程中输出类型转换以及程序运行后控制台窗口不退出设置
385 0
C#工程中输出类型转换以及程序运行后控制台窗口不退出设置