2016-11-27 57 views
0

我正在制作一个程序,在计算机关闭时必须保存其文件而无需用户交互。我试过了,但我不明白该怎么做,因为我发现的大部分信息都是针对C#的。我发现使用C++下面的代码的SystemEvents::SessionEnding事件,但我不知道如何在DEV-C++实现这一点:在Windows关闭之前关闭我的程序

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

这不是C++。这是C++/cli,它是一种针对.Net的语言。你需要找到如何使用Windows API来完成它。 – Eugene

回答

4

您显示的代码是不是C++。它是C++/CLI,又名C++ w/.NET托管扩展。它只适用于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

+0

非常感谢,您已将我的应用程序定位于控制台,因此我使用setConsoleCtrlHandler添加了HandlerRoutine,与CTRL_SHUTDOWN_EVENT一起使用以检测Windows何时关闭。 – CarlosS