Windows关机时如何执行function?

如何在Windowsclosures时执行一个函数。 这是我的情况,我在我的应用程序中使用WNetAddConnection2函数挂载一个驱动器。 现在我想要用户设置选项,如果驱动器将在下一次系统启动时被挂载。

如果他select了,而不是在下次启动时安装,那么我需要使用WNetCancelConnection2删除驱动器,但这应该只发生在用户closures系统时。

我只能想到唯一的解决办法。 创build一个服务来检查用户选项,然后决定是否安装驱动器。

还有其他方法可以继续吗?

如果你有一个可以处理消息的主窗口(甚至是一个不可见的窗口),你可以处理WM_ENDSESSION消息。

请参阅: http : //msdn.microsoft.com/en-us/library/aa376889(v=VS.85).aspx

如果您可以将您的应用程序转换为Windows服务(或让您的应用程序与您提供的应用程序进行通信),则可以在服务控制处理函数中收到SERVICE_CONTROL_SHUTDOWN时执行所需的操作。 这将解决你的应用程序处理用户交互从关机处理,这需要一直在运行(如果用户注销什么?)。

explorer.exe是Windows的GUI过程, 通常只有在Windows关闭时才会关闭(必须针对某些错误情况例外)。 您可以在WM_DESTROY窗口消息中侦听explorer.exe的进程ID,然后卸载。

我能想到的方式是:

  1. 将程序注册为自动启动(当PC启动时)。 这里是关于howto的教程。
  2. 将用户选项(如上所述)存储在存储库或注册表中(如果您知道如何)。 当你的应用程序已经开始,你可以阅读你的注册表,并采取相应的行动。
  3. 对于关闭,您的应用程序将不得不挂钩SystemEvent检测关闭(然后您可以采取相应措施)。 这里是一个关于howto(C#)的例子。 对于C ++,您可以收听WM_ENDSESSION消息。

我希望我的2分钱可以帮助你。