【问题标题】:Close my program before Windows shutdown在 Windows 关闭之前关闭我的程序
【发布时间】:2016-11-27 04:28:24
【问题描述】:

我正在制作一个程序,当计算机关闭时,它必须在没有用户交互的情况下保存其文件。我试过了,但我不明白该怎么做,因为我找到的大部分信息都是针对 C# 的。我使用以下 C++ 代码找到了SystemEvents::SessionEnding 事件,但我不知道如何在 dev-c++ 中实现它:

public:
    event SessionEndingEventHandler^ SessionEnding {
        static void add(SessionEndingEventHandler^ value);
        static void remove(SessionEndingEventHandler^ value);
    }
}

【问题讨论】:

  • 这不是 C++。这是 c++/cli,它是一种针对 .Net 的语言。您需要了解如何使用 Windows API 来完成。

标签: c++ dev-c++


【解决方案1】:

您展示的代码不是 C++。它是 C++/CLI,也就是带有 .NET 托管扩展的 C++。它仅适用于 Visual Studio。

简单的 C/C++ 方法是:

  1. 在 GUI 项目中使用窗口过程来处理 WM_QUERYENDSESSIONWM_ENDSESSION 窗口消息。

  2. 在控制台项目中使用SetConsoleCtrlHandler() 来处理CTRL_LOGOFF_EVENTCTRL_SHUTDOWN_EVENT 通知。

  3. 在服务项目中使用RegisterServiceCtrlHandlerEx() 来处理SERVICE_CONTROL_PRESHUTDOWNSERVICE_CONTROL_SHUTDOWN 通知。

详情参考MSDN:

Logging Off

Shutting Down

【讨论】:

  • 非常感谢,您指导了我,实际上我的应用程序在控制台中,所以我使用 setConsoleCtrlHandler 添加我的 HandlerRoutine,其中一个与 CTRL_SHUTDOWN_EVENT 一起使用来检测 Windows 何时被关闭。
猜你喜欢
  • 1970-01-01
  • 2013-01-31
  • 1970-01-01
  • 2010-12-28
  • 2013-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多