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# Win32控制台应用程序忽略 Ctrl + C,阻止程序退出

C# Win32控制台应用程序忽略 Ctrl + C,阻止程序退出,这里使用到了Windows API SetConsoleCtrlHandler函数注意:在VS中调试执行时,在处理程序例程中设置断点...

C#控制台基础 使用filestream读取txt文本文件并输出到控制台

镇场诗:慈心积善融学习,技术誓为大家学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。 ——————————————————————————————————————————————...

【黑马.Net程序员】C#控制台输入输出的控制

------------黑马.net培训-----------、wp7培训、.net培训、期待与您交流! 1.输出  在c#输出有两种,Write()和WriteLine(),它们都是Co...

在控制台中实现“单词竞猜”游戏 C# 猜词游戏

l  场景 设计规则 a) 这是一个单人玩的游戏。 b) 可以分三个级别,分别是高级、中级、低级。不同级别对应的单词系列也不一样。要求一旦玩家选定了要玩的级别,应当先提示它关于此级别最高分是多少...

C#控制台基础 写入txt文本中的内容实现换行

镇场诗:慈心积善融学习,技术誓为大家学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。 ——————————————————————————————————————————————...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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