控制台——屏蔽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 ...
随机推荐
- Truck History(卡车历史)
Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 26547 Accepted: 10300 Description Adv ...
- [bzoj3809]Gty的二逼妹子序列_莫队_分块
Gty的二逼妹子序列 bzoj-3809 题目大意:给定一个n个正整数的序列,m次询问.每次询问一个区间$l_i$到$r_i$中,权值在$a_i$到$b_i$之间的数有多少个. 注释:$1\le n\ ...
- Ubuntu 16.04安装Bless十六进制编辑器
一款专注于十六进制的编辑器. 安装: sudo apt-get install bless 启动:
- 16、Java并发性和多线程-死锁
以下内容转自http://ifeve.com/deadlock/: 死锁是两个或更多线程阻塞着等待其它处于死锁状态的线程所持有的锁.死锁通常发生在多个线程同时但以不同的顺序请求同一组锁的时候. 例如, ...
- Hadoop2.0之YARN
YARN(Yet Another Resource Negotiator)是Hadoop2.0集群中负责资源管理和调度以及监控运行在它上面的各种应用,是hadoop2.0中的核心,它类似于一个分布式操 ...
- 每日五题(jsp)
1.forward 和 redirect 的差别 答: 1.从地址栏显示来说 forward是server请求资源,server直接訪问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容 ...
- python列表可以加可以乘
python列表可以加可以乘 list=['abcd',786,2.23,'runoob',70.2] tinylist = [123,'runoob'] print(list) print(list ...
- [Vue +TS] Use Two-Way Binding in Vue Using @Model Decorator with TypeScript
Vue models, v-model, allow us to use two-way data binding, which is useful in some cases such as for ...
- 《Linux Device Drivers》第八章 分配内存——note
本章主要介绍Linux内核的内存管理. kmalloc函数的内幕 不正确所获取的内存空间清零 分配的区域在物理内存中也是连续的 flags參数 <linux/slab.h> <lin ...
- HDU 5311 Hidden String (优美的暴力)
Hidden String Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) ...