【第22期】观点:IT 行业加班,到底有没有价值?

C#实现控制台退出控制

转载 2011年01月13日 13:53:00

using System;
using System.Runtime.InteropServices;
using System.Threading;
using System.Diagnostics;

namespace ConsoleApplication3
...{
    public delegate bool ConsoleCtrlDelegate(int dwCtrlType);
    /**////    <summary>  
    ///    Class1    的摘要说明。  
    ///    </summary>  
    class Class1
    ...{
        [DllImport("kernel32.dll")]
        private static extern bool SetConsoleCtrlHandler(ConsoleCtrlDelegate HandlerRoutine, bool Add);
        //一個Ctrl    +    C的信號被接收,該信號或來自鍵盤,或來自GenerateConsoleCtrlEvent    函數  
        private const int CTRL_C_EVENT = 0;
        //一個    Ctrl    +    Break    信號被接收,該信號或來自鍵盤,或來自GenerateConsoleCtrlEvent    函數  
        private const int CTRL_BREAK_EVENT = 1;
        //當用戶系統關閉Console時,系統會發送此信號到此  
        private const int CTRL_CLOSE_EVENT = 2;
        //當用戶退出系統時系統會發送這個信號給所有的Console程序。該信號不能顯示是哪個用戶退出。  
        private const int CTRL_LOGOFF_EVENT = 5;
        //當系統將要關閉時會發送此信號到所有Console程序  
        private const int CTRL_SHUTDOWN_EVENT = 6;
        /**////    <summary>  
        ///    应用程序的主入口点。  
        ///    </summary>  
        [STAThread]
        static void Main(string[] args)
        ...{
            //  
            //    TODO:    在此处添加代码以启动应用程序  
            //  
            Class1 cl = new Class1();
        }

        public Class1()
        ...{
            ConsoleCtrlDelegate newDategate = new ConsoleCtrlDelegate(HandlerRoutine);
            bool re = SetConsoleCtrlHandler(newDategate, true);
            if (re)
            ...{
                Console.WriteLine("Set    SetConsoleCtrlHandler    success!!");
            }
            else
            ...{
                Debug.WriteLine("Set    SetConsoleCtrlHandler    Error!!");
                //AsReportFile.WriteFile("", "test.txt", "who close?");
            }
            Console.ReadLine();
        }

        bool HandlerRoutine(int CtrlType)
        ...{
            Console.WriteLine("Set    SetConsoleCtrlHandler    success!!");
            Console.WriteLine("Set    SetConsoleCtrlHandler    success!!");
            Console.WriteLine("Set    SetConsoleCtrlHandler    success!!");
            Console.WriteLine("Set    SetConsoleCtrlHandler    success!!");
            Console.WriteLine("Set    SetConsoleCtrlHandler    success!!");
            Console.WriteLine("Set    SetConsoleCtrlHandler    success!!");
            Console.WriteLine("Set    SetConsoleCtrlHandler    success!!");

            switch (CtrlType)
            ...{
                case CTRL_CLOSE_EVENT:
                    for (int i = 0; i < 100; i++)
                    ...{
                        Console.WriteLine("i    is:{0}", i);
                        Thread.Sleep(1000);
                    }
                    break;
            }

            return false;
        }
    }
}


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/pojianbing/archive/2008/03/31/2234138.aspx

举报

相关文章推荐

C# C#实现控制台退出控制

C#捕获控制台(console)关闭事件有时,公司内部自己开发的控制台(console)应用程序在服务器上运行会因为遇到某些异常自动关闭了,这就需要用某机制来捕获控制台(console)关闭事件,把这...

[转贴]使用 C# 进行 Outlook 2003 编程的简介

使用 C# 进行 Outlook 2003 编程的简介 发布日期: 7/5/2004 | 更新日期: 7/5/2004 Andrew W. Troelsen <a href="http://www.intert
  • isiqi
  • isiqi
  • 2004-07-06 22:09
  • 480

欢迎关注CSDN程序人生公众号

关注程序员生活,汇聚开发轶事。

使用C#进行Outlook 2003编程的简介

出处:5DMail.Net收集整理 作者:请作者联系 时间:2007-3-12 12:35:31 摘要: 本文介绍了 Microsoft Outlook 2003 对象模型介,并探讨了如何使用 C# 编程语言生成 Outlook 识别的应用程序和 Outlook 外接程序。 作为对象模型的 Outlook 2003 在将应用程序的功能公开给外部程序方面,Mi

C#实现控制台退出控制

function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text...

C#进度条之控制台显示浅析

C#进度条之控制台显示是如何实现的呢?我来看看实际的实现: usi
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)