C#实现控制台退出控制

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# class string c
个人分类: c#
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

C#实现控制台退出控制

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭