如何使用C++制作Windows的关机事件

下面研究在C++里,使用C++捕获windows的关机事件,看看C++是否可以做一个程序,能让它在关机的时候提醒我一下呢,这样就不会在有的文件没保存下的情况下,关机导致的损失了。

非常幸运很容易就找到了Microsoft.Win32命名空间下面的SystemEvents类,他有一个静态的事件SessionEnding在系统注销或者关机时发生,此事件只有在winform的程序下有效,而在控制台程序下面无效,不能激发事件;还有一点我们必须在程序推出时将加上的事件移除掉,否则就容易造成内存溢出。

关键代码如下:

using System;   


using System.Collections.Generic;   


using System.Windows.Forms;   


using Microsoft.Win32;   


namespace Shutdown   


{   


static class Program   


{   


/**////   


/// 应用程序的主入口点。   


///   


[STAThread]   


static void Main()   


{   


Application.EnableVisualStyles();   


Application.SetCompatibleTextRenderingDefault(false);   



FormShutdown formShutdown = new FormShutdown();   



SystemEvents.SessionEnding += new SessionEndingEventHandler(formShutdown.SystemEvents_SessionEnding);   


Application.Run(formShutdown);   


}   


}   


}Form 的代码:   


using System;   


using System.Collections.Generic;   


using System.ComponentModel;   


using System.Data;   


using System.Drawing;   


using System.Text;   


using System.Windows.Forms;   


using Microsoft.Win32;   


namespace Shutdown   


{   


public partial class FormShutdown : Form   


{   



const string MESSAGE_TXT = "您签退了吗?";   




const string MESSAGE_TITLE = "提示";   



public FormShutdown()   


{   


InitializeComponent();   


}  

此程序在使用C++在Windows2003下测试通过。大家在使用SystemEvents.SessionEnding事件时切记要在程序退出时移除事件。

不过有两点遗憾之处:

1. 使用这种方式不能捕获休眠时的事件

相关推荐