2016-11-27 91 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