我们开发的控制台应用,在运行阶段很有可能被用户Ctrl+C终止或是被用户直接*。如果我们不但愿用户通过Ctrl+C终止我们的措施,就需要对Ctrl+C或*事件作措置惩罚惩罚。
措置惩罚惩罚要领
在.net平台下Console类有个CancelKeyPress事件可以措置惩罚惩罚Ctrl+C,不过对付直接*控制台应用,这种措置惩罚惩罚就无能为力了。
不过Windows API中有个SetConsoleCtrlHandler函数可以措置惩罚惩罚这两种*事件。
C#措置惩罚惩罚代码如下:
代码如下:
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();
}
}
除声明外,,跑步客文章均为原创,转载请以链接形式标明本文地点
本文地点:
相关内容