C#捕获windows关机事件,在系统关机前做一些自己想做的事
2015-01-03 18:01
477 查看
C#捕获windows关机事件,在系统关机前做一些自己想做的事;
有些时候我们可能想在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的关机事件
- 使用c#捕获windows的关机事件
- 使用c#捕获windows的关机事件
- 使用c#捕获Windows的关机事件
- 使用c#捕获windows的关机事件(转载)
- C#接收Windows系统的关机(注销)事件
- 使用c#捕获windows的关机事件
- C#捕获Windows关机事件
- 使用c#捕获windows的关机事件
- 使用c#捕获windows的关机事件
- VC 捕获Windows关机事件
- C#实现控制Windows系统关机、重启和注销的方法:
- 在Closing事件中,将e.Cancle设置成true,则Windows无法关机和重启系统的解决办法
- C#基础-054 自己实现的一些字符串系统方法
- C#实现控制Windows系统关机、重启和注销的方法
- C#如何捕获windows关机事件
- C#注销或系统关机等事件
- VC 捕获Windows关机事件
- C#控制台代码获取windows的关机事件。
- C# 捕获关机事件方法