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#控制台基础 用户不断输入直到输入exit 退出循环或是退出控制台

慈心积善融学习,技术愿为有情学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。 基础版 using System; using System.Collec...
  • yushaopu
  • yushaopu
  • 2016年08月29日 09:28
  • 4214

C#控制台操作串口实例例程

本文介绍一个C#控制台下操作串口的范例程序,基于多线程的一个接收
  • cumtwys
  • cumtwys
  • 2014年07月21日 12:36
  • 2046

C#游戏编程:《控制台小游戏系列》之《一、黎明前的黑暗》

http://m.blog.csdn.net/blog/fa6507/8545233 本系列文章转载至hwenycocodq520 一、前言         码夫掐指一算,...
  • taotaoah
  • taotaoah
  • 2015年12月11日 21:25
  • 3083

程序设计之C#控制台输出日历示例

本题目的最终要就是根据用户输入的年和月在控制台输出单月的日历信息,附加范围年在1900-2100之间,月的范围在1-12之间,当用户输入不在范围时要给予错误信息提示;已知条件是1900年1月1日为星期...
  • q394895302
  • q394895302
  • 2017年03月07日 21:06
  • 635

C# Win32控制台应用程序忽略 Ctrl + C,阻止程序退出

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

C#中,退出窗口的时候如何干干净净把程序中的线程也干净的退出

转自博客:https://www.cnblogs.com/yjShow/archive/2013/02/05/IsBackground.html 前不久,做一个winform小程序,是给...
  • Hide_in_Code
  • Hide_in_Code
  • 2017年12月24日 14:46
  • 53

2048-控制台版本

/最近修改2017/6/26/ /修改2017/7/4,修改之前各自填满之后无法移动的错误,暂时未发现大的错误/ /最后修改2017/7/5,添加前景色,添加模式选择,改善界面/ 一.实验目标:...
  • Enterprise_
  • Enterprise_
  • 2017年06月09日 17:28
  • 266

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

慈心积善融学习,技术愿为有情学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。 1、 using System; using System.Collections...
  • yushaopu
  • yushaopu
  • 2016年09月12日 21:43
  • 2261

C#控制台应用程序的设计

命名空间 命名空间是一组包含相关方法的相似类,专门用于避免类与类之间的名称冲突。 命名空间可以嵌套,从而分成层次,类似于目录结构,多个源代码文件可以使用同一个命名空间。 na...
  • Alisawxn
  • Alisawxn
  • 2016年01月05日 20:37
  • 2004

C# 笔记4——如何实现单击放大全屏和退出全屏

C# 笔记4——如何实现单击放大全屏和退出全屏 由于工作需求,需要实现单击放大和退出全屏功能,想了一下,即单击放大时候把播放视频的picturebox的大小设置和屏幕宽高相同、位置设置为屏幕左上角(...
  • u011127242
  • u011127242
  • 2016年08月31日 10:40
  • 1630
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#实现控制台退出控制
举报原因:
原因补充:

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