C# 记录控制台程序退出

有一个自动更新的程序,用C#做的控制台程序,需要记录各种日志,包括退出,部分实现代码(和main函数放在一层):

 

Code
 1 [DllImport("kernel32.dll")]
 2         private static extern bool SetConsoleCtrlHandler(ConsoleCtrlDelegate HandlerRoutine, bool Add);
 3 
 4         public static void ClsMain()
 5         {
 6             // 用API安装事件处理
 7             ConsoleCtrlDelegate newDelegate = new ConsoleCtrlDelegate(HandlerRoutine);
 8             bool bRet = SetConsoleCtrlHandler(newDelegate, true);
 9             if (bRet == false)  //安装事件处理失败
10             {
11                 log.WriteLogFile("添加响应关闭事件失败");
12             }
13             else
14             {
15                 log.WriteLogFile("添加响应关闭事件成功");
16             }
17         }
18 
19         //当用户点击按钮关闭关闭Console时,系统会发送次消息
20         private const int CTRL_CLOSE_EVENT = 2;
21         //Ctrl+C,系统会发送次消息
22         private const int CTRL_C_EVENT = 0;
23         //Ctrl+break,系统会发送次消息
24         private const int CTRL_BREAK_EVENT = 1;
25         //用户退出(注销),系统会发送次消息
26         private const int CTRL_LOGOFF_EVENT = 5;
27         //系统关闭,系统会发送次消息
28         private const int CTRL_SHUTDOWN_EVENT = 6;
29 
30         /// <summary>
31         /// 处理消息的事件
32         /// </summary>
33         private static bool HandlerRoutine(int CtrlType)
34         {
35             switch (CtrlType)
36             {
37                 case CTRL_CLOSE_EVENT:     
38                     log.WriteLogFile("户点击按钮关闭,退出程序。");
39                     break;
40                 case CTRL_C_EVENT:
41                     log.WriteLogFile("Ctrl+C,退出程序。");
42                     break;
43                 case CTRL_BREAK_EVENT:
44                     log.WriteLogFile("Ctrl+break,退出程序。");
45                     break;
46                 case CTRL_LOGOFF_EVENT:
47                     log.WriteLogFile("用户退出(注销),退出程序。");
48                     break;
49                 case CTRL_SHUTDOWN_EVENT:
50                     log.WriteLogFile("系统关闭,退出程序。");
51                     break;
52             }
53             return false;
54         }

 

posted on 2012-10-08 08:49  Vercher  阅读(2450)  评论(0编辑  收藏  举报

导航