C# 控制台实现关闭前的操作,并使关闭按钮无法使用

转载 2011年01月13日 13:19:00

C# 控制台实现关闭前的操作,并使关闭按钮无法使用 收藏

  控制台的按钮真不好控制,最近的一个项目中,要对关闭控制台前对缓存数据进行数据库写入,所以就有了这么一个情境,实现的代码如下:

 

·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
  1. namespace ConsoleApplication3   
  2. {   
  3.     class Program   
  4.     {   
  5.         [DllImport("user32.dll", EntryPoint = "FindWindow")]   
  6.         extern static IntPtr FindWindow(string lpClassName, string lpWindowName);   
  7.         [DllImport("user32.dll", EntryPoint = "GetSystemMenu")]   
  8.         extern static IntPtr GetSystemMenu(IntPtr hWnd, IntPtr bRevert);   
  9.         [DllImport("user32.dll", EntryPoint = "RemoveMenu")]   
  10.         extern static IntPtr RemoveMenu(IntPtr hMenu, uint uPosition, uint uFlags);   
  11.         static void closebtn()   
  12.         {   
  13.             //IntPtr windowHandle = FindWindow(null, Process.GetCurrentProcess().MainModule.FileName);   
  14.             IntPtr windowHandle = FindWindow(null"sample");   
  15.             IntPtr closeMenu = GetSystemMenu(windowHandle, IntPtr.Zero);   
  16.             uint SC_CLOSE = 0xF060;   
  17.             RemoveMenu(closeMenu, SC_CLOSE, 0x0);   
  18.         }   
  19.         static void Main(string[] args)   
  20.         {   
  21.             Console.Title = "sample";   
  22.             closebtn();   
  23.             Console.CancelKeyPress += new ConsoleCancelEventHandler(CloseConsole);    
  24.             Console.WriteLine("Starting...");   
  25.             Console.Read();   
  26.         }  
  27.         #region CloseConsole 关闭时的事件   
  28.         /// <summary>   
  29.         /// 关闭时的事件   
  30.         /// </summary>   
  31.         /// <param name="sender">对象</param>   
  32.         /// <param name="e">参数</param>   
  33.         protected static void CloseConsole(object sender, ConsoleCancelEventArgs e)   
  34.         {   
  35.             aDataBaseBll.AcceptEmailChanges();   
  36.             aDataBaseBll.AcceptTaoBaoChanges();   
  37.         }  
  38.         #endregion   
  39.     }   
  40. }  

 

特别注意窗口名称的引用!

相关文章推荐

C#窗体皮肤制作(二):创建窗体库项目以及最小化、最大化、关闭按钮的实现

很高兴有朋友关注这篇博客,同时也十分抱歉让关注的朋友久等了,隔上一篇博客也有3个月没有更新,主要是由于3月份辞职,4月份初离职到期离开了北京高德,来到了上海张江。目前新工作也是熟悉当中,希望大家能体谅...

解决点击关闭按钮,应用程序退出时,系统爆出“集合已修改,可能无法执行枚举操作”异常的相关思路

这两天在优化升级公司的一个业务系统时,更改了一下窗体关闭事件中的一句代码,由system.Enviromen.Exit(0)改为了Application.Exit();但是这时候问题就出现了,当点击系...

c#重写TabControl控件实现关闭按钮

1.c#里面的TabControl控件没有关闭按钮,而且很难看。 2.有一些已经做好的第三方控件,但是收费。 3.由于我的故障树推理诊断项目在绘图的时候允许同时打开多个文档进行操作,就要实现类似于...

C#按关闭按钮实现最小化,按ESC才关闭的实现【含系统消息大全】

protected override void WndProc(ref Message m) { const int WM_SYSCOMMAND = 0x0...

c#设置不显示右上角的最小化最大化关闭按钮

在C#窗体编程时,如何设置不显示右上角的最小化最大化关闭按钮。可以通过this.ControlBox这个属性的值来控制。 在Windows的窗体编程中,基本上每一个窗体都是一个最小化、最大化和关闭按...

c#关闭按钮(工具)

  • 2012-06-09 14:18
  • 112KB
  • 下载

C# Winform 拦截关闭按钮触发的事件

用户关闭软件时,软件一般会给“是否确认关闭”的提示。通常,我们把它写在FormClosing 事件中,如果确定关闭,就关闭;否则把FormClosingEventArgs 的 Cancel 属性设置为...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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