C#捕获windows关机事件,在系统关机前做一些自己想做的事;

有些时候我们可能想在Windows关机时记录或处理一些事情,这里提供几种方法。

方法一:

        /// <summary>/// 窗口过程的回调函数/// </summary>/// <param name="m"></param>protected override void WndProc(ref Message m){switch (m.Msg){//此消息在OnFormClosing之前case WindowsMessage.WM_QUERYENDSESSION://MessageBox.Show("WndProc.WM_QUERYENDSESSION.我要阻止系统关闭!");//this.Close();//this.Dispose();//Application.Exit();m.Result = (IntPtr)1; //阻止Windows注销、关机或重启break;default:break;}base.WndProc(ref m);}

方法二:

        protected override void OnFormClosing(FormClosingEventArgs e){switch (e.CloseReason){case CloseReason.ApplicationExitCall:e.Cancel = true;MessageBox.Show("拦截关闭要求事件!");break;case CloseReason.FormOwnerClosing:e.Cancel = true;MessageBox.Show("拦截自身关闭事件!");break;case CloseReason.MdiFormClosing:e.Cancel = true;MessageBox.Show("拦截MDI窗体关闭事件!");break;case CloseReason.None:break;case CloseReason.TaskManagerClosing:e.Cancel = true;MessageBox.Show("拦截任务管理器关闭事件!");break;case CloseReason.UserClosing://注销或关机会触发此事件;//MessageBox.Show("拦截用户关闭事件!");e.Cancel = false;break;case CloseReason.WindowsShutDown:e.Cancel = true;MessageBox.Show("拦截关机事件!");break;default:break;}base.OnFormClosing(e);}

方法三:

//当用户试图注销或关闭系统时发生。  SystemEvents.SessionEnding += new SessionEndingEventHandler(SystemEvents_SessionEnding);//下面是系统注销或关闭事件处理程序,  private void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e){if (MessageBox.Show(this, "是否允许系统注销!", "系统提示", MessageBoxButtons.YesNo) != DialogResult.Yes){e.Cancel = true;}else{e.Cancel = false;}SessionEndReasons reason = e.Reason;switch (reason){case SessionEndReasons.Logoff:MessageBox.Show("用户正在注销。操作系统继续运行,但启动此应用程序的用户正在注销。");break;case SessionEndReasons.SystemShutdown:MessageBox.Show("操作系统正在关闭。");break;}}//如果把上面的事件处理程序修改成如下  //private void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)  //       {  //          e.Cancel = true; //   } //那会出现什么情况,你点击开始菜单关机选择注销、关机、或重新启动将会失效,电脑不能正常关机了,进一步的话把程序做成Windows服务,晕,恶作剧? //SessionEnded事件同上,事件参数类为SessionEndedEventArgs,同SessionEndingEventArgs相比少了Cancel属性,Cancel属性同一些windows下的某些事件差不多,比如Form.Closing事件,Control.Validating事件。//补充,如果需要获取应用程序需要的系统信息,可以访问System.Windows.Forms.SystemInformation类,这也是一个很有用的类,它提供了一组静态属性。

但在调试时并没有执行到这里!

C#捕获windows关机事件,在系统关机前做一些自己想做的事相关推荐

  1. 关闭服务器系统关机事件,让Win10关机时显示“关闭事件跟踪程序”(选择关机原因)...

    使用过Windows Server服务器的童鞋,应该都知道,在关机或重启时会弹出"关机原因"对话框,选择关机原因后,才能继续关机操作,这就是"关闭事件跟踪程序" ...

  2. Windows 7下阻止系统关机

    从Vista开始,想阻止系统关机就开始变麻烦了,不能只拦截WM_QUERYENDSESSION了,操作系统只给一个应用程序两秒钟的时间去保存自己的东西,两秒钟之后,不管做完了没有,Game Over! ...

  3. android 关机功能,Android系统关机或重启的几种实现方式

    前阵子工作上遇到一些关于Android系统关机或重启的系统修改,于是,做了一些尝试,也搜集了一下资料,现在整理一下,做一些总结,方便学习或者日后工作的需要. 默认的SDK并没有提供应用开发者直接的An ...

  4. 服务器安装Windows Server + Ubuntu双系统

    说明: 服务器安装双系统的意义不大,感觉工作站更适合吧.应客户要求,本文以Dell PowerEdge R740为例,简要介绍下如何在服务器上安装Windows Server+Ubuntu双系统. 操 ...

  5. 在Closing事件中,将e.Cancle设置成true,则Windows无法关机和重启系统的解决办法

    最近在设计一个WinForm程序的时候遇到一个bug,就是From1窗体的关闭事件中设置了e.Cancle设置成true,导致系统无法关机重启,windows7 和windows xp都是这样. 我这 ...

  6. 服务器系统意外关机 id41,Windows内核事件ID 41.系统已重新启动,无需首先关闭 | MOS86...

    单击此处可以修复Windows错误并提高系统性能Windows内核事件ID 41是在Windows 7和Windows Server 2008上的事件查看器中现在发现的一个常见错误.微软最近发表了一篇 ...

  7. win10系统5小时休眠—windows日志查看 判断非法关机

    win10系统5小时休眠-windows日志查看 判断非法关机 1 分析 2 操作 3 日志介绍 参考 1 分析 自己设置从不休眠模式,还是进入了休眠模式,原因是电源不稳定或者是散热的问题或者是设置不 ...

  8. Windows Server 2003 禁止关机事件跟踪

    关机事件跟踪(Shutdown Event Tracker)也是Windows server     2003区别于其他工作站系统的一个设置,对于服务器来说这是一个必要的选择,但是对于工作站系统却没什 ...

  9. php控制windows系统关机,window_winXP系统设置一键关机的两种方法,windows系统关机需要三步,对我 - phpStudy...

    winXP系统设置一键关机的两种方法 windows系统关机需要三步,对我这样的懒人来说实在不方便.在网络上寻找了许多方法,最后用了一个.现在介绍给有需要的人.关机方法是鼠标一点关机或热键关机. 创建 ...

最新文章

  1. 《自然语言处理入门》不是 NLP 学习路上的万能药
  2. Linux负载均衡软件LVS
  3. windows下 Qt 静态编译
  4. 使用 MarkDown DocFX 升级 Rafy 帮助文档
  5. 怎么确保网站的可用性
  6. httpclient4 中文版帮助文档,最新官方版翻译版(第一章 上)
  7. linux设备驱动归纳总结(五):3.操作硬件——IO静态映射【转】
  8. leetcode1047. 删除字符串中的所有相邻重复项
  9. netcore docker_让.NetCore程序跑在任何有docker的地方
  10. bios设置 联想m8000t_Ideapad 700-17笔记本使用bios设置u盘启动方法介绍【图文详解】...
  11. 转:MSSQL SERVER行转列 列转行
  12. CodeForces615A-Bulbs-模拟
  13. 混沌理论物理学用科学中视角看未来、现实、时间​​​​​​​
  14. 移动互联网之路——Axure RP 8.0网站与APP原型设计从入门到精通
  15. 调平均律依据拍音来判断准确性的理论简析
  16. 通过函数seaborn.cubehelix_palette生成顺序调色板
  17. 涂鸦 opengl简单应用1
  18. 14届蓝桥杯Python总结
  19. 使用hapi 要具备什么知识
  20. macOS上使用Openconnect代替Cisco Anyconnect

热门文章

  1. IP数据报捕获及数据分析
  2. Pytorch BERT
  3. dede php 里加nofollow,织梦导航栏目如何加nofollow
  4. 计算机在储存数据时把2的50次方,2016职称计算机考试word2003考前选择题押题2
  5. 距离远的贴图出现模糊的解决方法
  6. 索引创建、删除的sql语句
  7. 多网卡电脑野外作业建议
  8. [点点滴滴]--一些话
  9. LeetCode解题记录本子
  10. 网易服务器图片不显示图片,为什么网易的网页中部分图片不能正常显示?