【第22期】观点:IT 行业加班,到底有没有价值?

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# 控制台实现关闭前的操作,并使关闭按钮无法使用

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

VC++无效化控制台窗口的关闭按钮

VC++无效化控制台窗口的关闭按钮 2009-03-21 18:09 ——————— 【 转载请保留 】 ——————— 作者:Defanive博客:Console.Dec.Cn(Hi.Baidu.Com/Console

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

忆龙2009:Microsoft .NET Compact Framework 开发常见问题解答

Microsoft .NET Compact Framework 开发常见问题解答 msdn上的地址 http://www.microsoft.com/china/msdn/library/NetFr...

网页中实现浏览器的最大,最小化和关闭按钮

&lt;html&gt;&lt;head&gt;&lt;title&gt;测试页面&lt;/title&gt;&lt;meta http-equiv="Content-Type" content="...

C#/CSharp - 禁用Form的关闭按钮

private const int CP_NOCLOSE_BUTTON = 0x200; protected override CreateParams CreateParams { get { CreateParams myCp = base.Cr...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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