控制台应用程序关闭事件
来源:互联网 发布:办公平台软件免费 编辑:程序博客网 时间:2024/06/04 19:26
我们开发的控制台应用,在运行阶段很有可能被用户Ctrl+C终止或是被用户直接关闭。如果我们不希望用户通过Ctrl+C终止我们的程序,就需要对Ctrl+C或关闭事件作处理。
处理方法
在.net平台下Console类有个CancelKeyPress事件可以处理Ctrl+C,不过对于直接关闭控制台应用,这种处理就无能为力了。
不过Windows API中有个SetConsoleCtrlHandler函数可以处理这两种关闭事件。
C#处理代码如下:
导入命名空间
using System.Runtime.InteropServices;
处理方法
在.net平台下Console类有个CancelKeyPress事件可以处理Ctrl+C,不过对于直接关闭控制台应用,这种处理就无能为力了。
不过Windows API中有个SetConsoleCtrlHandler函数可以处理这两种关闭事件。
C#处理代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
static
class
Program
{
public
delegate
bool
ControlCtrlDelegate(
int
CtrlType);
[DllImport(
"kernel32.dll"
)]
private
static
extern
bool
SetConsoleCtrlHandler(ControlCtrlDelegate HandlerRoutine,
bool
Add);
private
static
ControlCtrlDelegate cancelHandler =
new
ControlCtrlDelegate(HandlerRoutine);
public
static
bool
HandlerRoutine(
int
CtrlType)
{
switch
(CtrlType)
{
case
0:
Console.WriteLine(
"0工具被强制关闭"
);
//Ctrl+C关闭
break
;
case
2:
Console.WriteLine(
"2工具被强制关闭"
);
//按控制台关闭按钮关闭
break
;
}
Console.ReadLine();
return
false
;
}
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static
void
Main(
string
[] args)
{
SetConsoleCtrlHandler(cancelHandler,
true
);
Console.ReadLine();
}
}
阅读全文
0 0
- 控制台应用程序关闭事件
- C++捕捉关闭控制台应用程序事件
- 控制台关闭事件
- 如何捕捉控制台程序的关闭事件
- 如何捕捉控制台程序的关闭事件
- C# 控制台捕获关闭事件的代码
- C++控制台程序的关闭事件
- 捕获控制台程序关闭事件(SetConsoleCtrlHandler
- C# 控制台捕获关闭事件的代码
- 控制台应用程序
- 控制台应用程序
- 控制台应用程序
- 关闭应用程序
- 关闭应用程序
- 关闭应用程序
- 控制台处理关闭消息
- Linux关闭控制台蜂鸣器
- 打开应用程序,关闭应用程序
- 设计模式-概述
- MySQL优化技术:3范式的表设计
- 【图论】【最短路径模板+邻接表】【Floyed+Dijsktra+Bellman-Ford+SPFA】【最短路算法对比分析】
- 使用nvm进行node版本管理
- 06-SpringBoot——Spring常用配置-Bean的初始化和销毁
- 控制台应用程序关闭事件
- 今日头条校招题目——贪心+排序思想
- Robots协议
- tf3. Variable
- 国税总局发票助手二维码生成的CRC计算
- tf4. Placeholder
- Ubuntu-gdb调试
- tf5. 构建基础网络
- tf6. Tensorboard 图