程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 如何使用C++制作Windows的關機事件

如何使用C++制作Windows的關機事件

編輯:C++入門知識

下面研究在C++裡,使用C++捕獲windows的關機事件,看看C++是否可以做一個程序,能讓它在關機的時候提醒我一下呢,這樣就不會在有的文件沒保存下的情況下,關機導致的損失了。

非常幸運很容易就找到了Microsoft.Win32命名空間下面的SystemEvents類,他有一個靜態的事件SessionEnding在系統注銷或者關機時發生,此事件只有在winform的程序下有效,而在控制台程序下面無效,不能激發事件;還有一點我們必須在程序推出時將加上的事件移除掉,否則就容易造成內存溢出。

關鍵代碼如下:

  1. using System;   
  2. using System.Collections.Generic;   
  3. using System.Windows.Forms;   
  4. using Microsoft.Win32;   
  5. namespace Shutdown   
  6. {   
  7. static class Program   
  8. {   
  9. /**////   
  10. /// 應用程序的主入口點。   
  11. ///   
  12. [STAThread]   
  13. static void Main()   
  14. {   
  15. Application.EnableVisualStyles();   
  16. Application.SetCompatibleTextRenderingDefault(false);   
  17. FormShutdown formShutdown = new FormShutdown();   
  18. SystemEvents.SessionEnding += new SessionEndingEventHandler(formShutdown.SystemEvents_SessionEnding);   
  19. Application.Run(formShutdown);   
  20. }   
  21. }   
  22. }Form 的代碼:   
  23. using System;   
  24. using System.Collections.Generic;   
  25. using System.ComponentModel;   
  26. using System.Data;   
  27. using System.Drawing;   
  28. using System.Text;   
  29. using System.Windows.Forms;   
  30. using Microsoft.Win32;   
  31. namespace Shutdown   
  32. {   
  33. public partial class FormShutdown : Form   
  34. {   
  35. const string MESSAGE_TXT = "您簽退了嗎?";   
  36. const string MESSAGE_TITLE = "提示";   
  37. public FormShutdown()   
  38. {   
  39. InitializeComponent();   
  40. }  

此程序在使用C++在Windows2003下測試通過。大家在使用SystemEvents.SessionEnding事件時切記要在程序退出時移除事件。

不過有兩點遺憾之處:

1. 使用這種方式不能捕獲休眠時的事件

2. 這個程序占用的內存太多了,只有這麼一個小功能居然占了12M的內存,這都是.Net framework惹的貨;實在是不可思議。

大家有沒有什麼好主意可以克服這兩個缺點呢?

  1. 簡介學習C++總結之談
  2. 對C++庫函數進行學習探索總結筆記
  3. C++類庫設計的基本構思與方法
  4. C++語言真的還有市場價值?
  5. C++類庫設計的基本構思與方法

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved