控制台——屏蔽Ctrl+C快捷键对窗体的关闭功能
导入SetCtrlHandlerHandler API
//定义处理程序委托
public delegate bool ConsoleCtrlDelegate(int ctrlType);
//导入SetCtrlHandlerHandler API
[DllImport("kernel32.dll")]
private static extern bool SetConsoleCtrlHandler(ConsoleCtrlDelegate HandlerRoutine, bool Add);
//当用户关闭Console时,系统会发送次消息
private const int CTRL_CLOSE_EVENT = ;
//Ctrl+C,系统会发送次消息
private const int CTRL_C_EVENT = ;
//Ctrl+break,系统会发送次消息
private const int CTRL_BREAK_EVENT = ;
//用户退出(注销),系统会发送次消息
private const int CTRL_LOGOFF_EVENT = ;
//系统关闭,系统会发送次消息
private const int CTRL_SHUTDOWN_EVENT = ;
这是对事件处理的方法,后面SetCtrlHandlerHandler会进行调用
//处理程序例程,在这里编写对指定事件的处理程序代码注意:在VS中调试执行时,在这里设置断点,但不会中断;会提示:无可用源
private static bool HandlerRoutine(int ctrlType)
{
Console.WriteLine(ctrlType);
switch (ctrlType)
{
case CTRL_C_EVENT:
Console.WriteLine("C");
return true; //这里返回true,表示阻止响应系统对该程序的操作
//break;
case CTRL_BREAK_EVENT:
Console.WriteLine("BREAK");
return true;
case CTRL_CLOSE_EVENT:
Console.WriteLine("CLOSE");
return true;
case CTRL_LOGOFF_EVENT:
Console.WriteLine("LOGOFF");
return true;
case CTRL_SHUTDOWN_EVENT:
Console.WriteLine("SHUTDOWN");
return true;
}
//return true;//表示阻止响应系统对该程序的操作
return false;//忽略处理,让系统进行默认操作
}
核心代码是位于类的构造函数中
public Program()
{
ConsoleCtrlDelegate consoleDelegete = new ConsoleCtrlDelegate(HandlerRoutine);
bool bRet = SetConsoleCtrlHandler(consoleDelegete, true);
if (bRet == false) //安装事件处理失败
{
Console.WriteLine("error");
while (true)
{
Console.WriteLine("...");
Thread.Sleep();
}
}
else
{
Console.WriteLine("ok");
while (true)
{
Console.WriteLine("...");
Thread.Sleep();
}
}
}
控制台主函数入口处调用方法
static void Main(string[] args)
{
Program cls = new Program();
//Console.ReadKey();
}
参考:SetConsoleCtrlHandler 处理控制台消息、SetConsoleCtrlHandler
控制台——屏蔽Ctrl+C快捷键对窗体的关闭功能的更多相关文章
- win7屏蔽ctrl+alt+up/down快捷键/ (eclipse冲突)
win7屏蔽ctrl+alt+up/down快捷键/ Eclipse有个非常好用的快捷键(当然Eclipse好用的快捷键有N个)Ctrl+Alt+UP/DOWN,用于复制当前行的内容,用法很简单, ...
- C# 屏蔽Ctrl Alt Del 快捷键方法+屏蔽所有输入
原文:C# 屏蔽Ctrl Alt Del 快捷键方法+屏蔽所有输入 Win32.cs /* * * FileCreate By Bluefire * Used To Import WindowsApi ...
- c++屏蔽Win10系统快捷键
很久之前实现的功能,也是参考其他人的实现,时间太久,具体参考哪里已经记不得了. 这里不仅能屏蔽一般的快捷键,还可以屏蔽ctrl+atl+del. ; HHOOK keyHook = NULL; HHO ...
- Sublime使用Ctrl+`作为快捷键弹出Console没有反映的解决办法
很多Sublime新人都遇到了这个问题,到网上搜,信息很片面,而且不少都是旧版本的.于是有了这篇文章. 默认Sublime使用Ctrl+`作为快捷键弹出Console,但不同的系统抑或安装 ...
- IE屏蔽鼠标右键、禁止复制粘贴等功能
<body oncontextmenu="return false" onselectstart="return false" ondragstart=& ...
- Winfrom窗体无法关闭问题--检查是否存在重写
问题描述: Winfrom窗体无法关闭问题----点击关闭/最大/最小化无法正常相应. 问题来源: 老版本的程序要求使用无边框的Form窗体(实现功能——设置为无边框窗体并重写窗体的关闭.最大.最小化 ...
- 编写Java程序,应用客户端和服务端通过 Eclipse 控制台的输入和显示实现简易的聊天功能
查看本章节 查看作业目录 需求说明: 应用客户端和服务端通过 Eclipse 控制台的输入和显示实现简易的聊天功能 实现思路: 创建 Java 项目,在项目中创建服务端类 ChatServerThre ...
- C#:控制台程序调用中间库创建窗体
1.类库项目引用System.Windows.Forms并添加引用后,才可创建窗体. 2.控制台应用程序调用中间库(DLL)中的方法创建窗体:中间类库使用反射下的Assembly加载包含窗体的类库及创 ...
- 如何屏蔽ctrl + v 粘贴事件,鼠标右键粘贴事件
通常在自己的APP里的密码框,验证码框需要屏蔽复制,粘贴,怎么办呢? 有三种方法: 1 hook 此方法是最完全的,但由于hook是全局的,容易影响到其它代码. 2 子类化文本框, 重写OnPaste ...
随机推荐
- [bzoj2879][网络流,动态加边]美食节[Noi2012]
就是bzoj1070的加强版,数据规模扩大了n倍,这样要是一次把所有边都加进去的话就爆炸了,,所以使用单路增广,增广过一条边后在加入下一条边. //By hzwer 1 #include<ios ...
- A - 不容易系列之(3)―― LELE的RPG难题 简单递推
人称“AC女之杀手”的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多“Cole”(LELE的粉丝,即"可乐"),经过多方打探,某资深Cole终于知道了原因,原来,LELE最近研 ...
- HDFS2.0之简单总结
新特性 NameNode支持HA 命名空间支持分区(Federation) 支持ViewFS 支持目录快照 支持权限ACL 支持缓存指定的文件 QJM实现名字节点HA (图片来源互联网) 命名空间分区 ...
- ngTbale真分页实现排序、搜索等功能
一. 真分页表格基础 1. 需求:分页,排序,搜索都是需要发API到服务端. 2. JS实现代码: getStorage是localStorage一个工具方法,可以自己写这个方法. API参数如下: ...
- Android GIS开发系列-- 入门季(1) 起点
前言 这个系列,待最终完成更新,大家体谅点,第一版本全部是参考的网络教程,最近会逐步的细化更新为可以直接使用的情况. 本系列的开发基于AS ( Android Studio ), 和ArcGIS 的 ...
- laravel5.5更新到laravel5.7
为什么要更新呢?因为项目用的第三方后台扩展包,有很些bug,不够完美.想要一个漂亮的后台,那个后台只支持5.7. 然后,我就开始更新框架了. 修改后:"php": "&g ...
- unary operator expected
在centos系统从root用户切换到oracle用的时候,总是提示 : -bash- : :[: unary operator expected 能切换成功,就是总提示上面这个, 后来找到原因,在安 ...
- LintCode-分糖果
有 N 个小孩站成一列.每一个小孩有一个评级. 依照下面要求.给小孩分糖果: 每一个小孩至少得到一颗糖果. 评级越高的小孩能够得到很多其它的糖果. 需最少准备多少糖果? 您在真实的面试中是否遇到过这个 ...
- 异常:”未处理System.TypeLoadException“
1.问题由来: 在敲系统时原来的已有的类都能正常的执行,可是当加入一个新的实体类CancelCard的时候系统执行时显示错误例如以下: watermark/2/text/aHR0cDovL2J ...
- Android studio 解决setText中文乱码问题
我在用Android Studio编译器的时候,总会遇到非常多乱码的问题.第一个乱码问题是在Layout文件中面定义了EditText.在代码中须要将获取到的内容填充到EditText里面,这时候假设 ...