自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何使用C++制作Windows的關(guān)機(jī)事件

開(kāi)發(fā) 后端
使用C++制作Windows的關(guān)機(jī)時(shí)遇到的最大問(wèn)題就是:首先是使用這種方式不能捕獲休眠時(shí)的事件,其次這個(gè)程序占用的內(nèi)存太多了。

下面研究在C++里,使用C++捕獲windows的關(guān)機(jī)事件,看看C++是否可以做一個(gè)程序,能讓它在關(guān)機(jī)的時(shí)候提醒我一下呢,這樣就不會(huì)在有的文件沒(méi)保存下的情況下,關(guān)機(jī)導(dǎo)致的損失了。

非常幸運(yùn)很容易就找到了Microsoft.Win32命名空間下面的SystemEvents類(lèi),他有一個(gè)靜態(tài)的事件SessionEnding在系統(tǒng)注銷(xiāo)或者關(guān)機(jī)時(shí)發(fā)生,此事件只有在winform的程序下有效,而在控制臺(tái)程序下面無(wú)效,不能激發(fā)事件;還有一點(diǎn)我們必須在程序推出時(shí)將加上的事件移除掉,否則就容易造成內(nèi)存溢出。

關(guān)鍵代碼如下:

  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.   /// 應(yīng)用程序的主入口點(diǎn)。   
  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下測(cè)試通過(guò)。大家在使用SystemEvents.SessionEnding事件時(shí)切記要在程序退出時(shí)移除事件。

不過(guò)有兩點(diǎn)遺憾之處:

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

2. 這個(gè)程序占用的內(nèi)存太多了,只有這么一個(gè)小功能居然占了12M的內(nèi)存,這都是.Net framework惹的貨;實(shí)在是不可思議。

大家有沒(méi)有什么好主意可以克服這兩個(gè)缺點(diǎn)呢?

【編輯推薦】

  1. 簡(jiǎn)介學(xué)習(xí)C++總結(jié)之談
  2. 對(duì)C++庫(kù)函數(shù)進(jìn)行學(xué)習(xí)探索總結(jié)筆記
  3. C++類(lèi)庫(kù)設(shè)計(jì)的基本構(gòu)思與方法
  4. C++語(yǔ)言真的還有市場(chǎng)價(jià)值?
  5. C++類(lèi)庫(kù)設(shè)計(jì)的基本構(gòu)思與方法
責(zé)任編輯:chenqingxiang 來(lái)源: wewill.cn
相關(guān)推薦

2010-01-26 15:51:06

C++變量

2010-01-25 13:31:27

C++程序

2011-08-08 16:49:07

自動(dòng)關(guān)機(jī)SwitchOffWindows

2010-01-25 09:50:58

C++函數(shù)對(duì)象

2010-01-28 14:33:58

C++Test工具

2010-01-22 14:20:17

Visual C++

2010-01-25 14:00:27

C++類(lèi)

2023-10-30 11:45:44

FridaC++函數(shù)

2009-09-09 13:47:38

C++訪問(wèn)SqlCe

2019-07-09 19:36:54

Windows 10Windows關(guān)機(jī)延遲

2010-01-11 13:52:32

Visual C++子

2010-01-18 17:14:50

C++語(yǔ)言

2010-01-20 09:54:27

C++數(shù)據(jù)類(lèi)型

2021-10-11 11:53:07

C++接口代碼

2010-01-15 19:28:59

C++

2010-01-15 16:25:48

學(xué)習(xí)C++

2010-01-28 10:33:10

C++開(kāi)發(fā)程序

2023-11-13 17:01:26

C++編程

2011-05-18 18:05:47

C#C++

2012-05-14 09:28:33

Windows8關(guān)機(jī)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)