如何在Windows关闭时执行功能

时间:2010-11-04 10:02:06

标签: c++ windows

如何在Windows关闭时执行功能。这是我的方案,我在我的应用程序中使用WNetAddConnection2函数安装驱动器。现在,如果驱动器将在下次系统启动时挂载,我希望用户设置该选项。

如果他选择,而不是在下次启动时挂载,那么我需要使用WNetCancelConnection2删除驱动器,但这只应在用户关闭系统时发生。

我只能想到解决方案。创建一个服务,它将检查用户选项,然后决定是否安装驱动器。

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

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

如果您可以将应用程序转换为Windows服务(或让您的应用程序与您提供的应用程序通信状态),则可以在service control handler function中收到SERVICE_CONTROL_SHUTDOWN后执行必要的操作。这会将处理用户交互的应用与关机处理分离,这需要一直运行(如果用户注销会怎样?)。

答案 2 :(得分:0)

explorer.exe是Windows的GUI过程,如果Windows关闭,通常只会关闭(必须对某些错误条件进行例外处理)。您可以在WM_DESTROY窗口消息上侦听explorer.exe的进程ID,然后卸载。

答案 3 :(得分:0)

我能想到的方法是:

  1. 将程序注册为自动启动(PC启动时)。 Here's关于howto的教程。
  2. 将用户选项(如上所述)存储在存储库或注册表中(如果您知道如何)。当您的应用程序启动时,您可以阅读您的注册表并采取相应的行动。
  3. 对于关闭,您的应用程序必须将自己挂钩在SystemEvent上以检测关闭(然后您可以相应地执行操作)。 Here's关于howto(C#)的一个例子。对于C ++,您可以收听WM_ENDSESSION消息。
  4. 我希望我的2美分可以帮助你。