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

應(yīng)用程序禁止Windows屏幕保護(hù)

開發(fā) 后端
眾所周知,我們的計(jì)算機(jī)一旦啟動(dòng)屏幕保護(hù),其他程序運(yùn)行速度就會(huì)明顯減慢。文章介紹一種應(yīng)用程序來禁止Windows屏幕保護(hù)。

  如果在你的程序中需要一個(gè)很長(zhǎng)的時(shí)間段來進(jìn)行大量的數(shù)據(jù)處理,這段時(shí)間長(zhǎng)得足以使Windows因檢測(cè)不到用戶動(dòng)作而激活屏幕保護(hù)程序,一旦啟動(dòng)了屏幕保護(hù)程序,你的程序運(yùn)行實(shí)際上就變慢了,這會(huì)大大影響程序的正常運(yùn)行。有沒有一種應(yīng)用程序可以在進(jìn)行長(zhǎng)時(shí)間的數(shù)據(jù)處理前關(guān)掉屏幕保護(hù)呢?答案是肯定的。Windows在啟動(dòng)屏幕保護(hù)程序前會(huì)向當(dāng)前激活的應(yīng)用程序發(fā)送WM_SYSCOMMAND消息,其中wParam參數(shù)指定了即將執(zhí)行的系統(tǒng)命令類型,在本例中其值為SC_SCREENSAVE。問題在于程序如何捕獲這個(gè)消息呢?在C Builder中可以利用TApplication類的OnMessage事件句柄來處理這個(gè)消息。應(yīng)用程序在接收到任何Windows消息后都會(huì)觸發(fā)TApplication類的OnMessage事件,通過定義這個(gè)事件的處理程序,可以捕獲發(fā)送給應(yīng)用程序的所有Windows消息(這當(dāng)然不包括在程序中用SendMessage函數(shù)發(fā)送的消息)。

  OnMessage事件的定義如下:

  1. typedefvoid__fastcall(__closure  
  2. *TMessageEvent)(tagMSG&Msg,bool&Handled);  
  3. __propertyTMessageEventOnMessage=  
  4. {read=FOnMessage,write=FOnMessage}; 

  其中TMessageEvent類型是OnMessage事件的類型,它定義了處理消息的方法,Msg參數(shù)給出了Windows消息的相關(guān)信息,其結(jié)構(gòu)如下:

  1. typedefstructtagMSG{  
  2. HWNDhwnd;  
  3. UINTmessage;  
  4. WPARAMwParam;  
  5. LPARAMlParam;  
  6. DWORDtime;  
  7. POINTpt;} 

  Handled參數(shù)決定了如何對(duì)消息進(jìn)行下一步處理,如果在接收到一個(gè)消息后將Handled參數(shù)設(shè)為true,則這個(gè)消息將不會(huì)得到進(jìn)一步的處理,在本例中就是取消屏幕保護(hù)程序的激活。

  啟動(dòng)C Builder,新建一工程文件,在頭文件中的Private段增加對(duì)成員函數(shù)CaptureMessage的聲明:

  1. classTForm1:publicTForm  
  2. {  
  3. __published:  
  4. private:  
  5. void__fastcallCaptureMessage(tagMSG&Msg,bool&Handled);  
  6. public:  
  7. __fastcallTForm1(TComponent*Owner);  
  8. }; 

  在.cpp文件中增加CaptureMessage的定義:

  1. void__fastcallTForm1::CaptureMessage(tagMSG&Msg,bool&Handled)  
  2. {  
  3. if(Msg.message==WM_SYSCOMMAND&&Msg.wParam==SC_SCREENSAVE)  
  4. Handled=true;//阻止屏幕保護(hù)的啟動(dòng)  
  5. else 
  6. Handled=false;//進(jìn)行該消息的缺省處理  

  再將定義好的CaptureMessage函數(shù)作為OnMessage事件的事件處理器,將以下代碼加到主窗體的OnCreate事件處理器中:

  1. void__fastcallTForm1::FormCreate(TObject*Sender)  
  2. {  
  3. Application->OnMessage=CaptureMessage;  

  編譯并運(yùn)行程序,你可以事先將屏幕保護(hù)的等待時(shí)間設(shè)為一個(gè)盡可能小的值來檢驗(yàn)程序的運(yùn)行情況。你會(huì)發(fā)現(xiàn)在程序運(yùn)行期間,屏幕保護(hù)程序?qū)o法被激活,關(guān)閉運(yùn)行的程序后再等待一會(huì)兒,屏幕保護(hù)程序就會(huì)正常出現(xiàn)。以上代碼在C Builder3、win98環(huán)境中運(yùn)行通過。

【編輯推薦】

  1. 改善Web應(yīng)用程序開發(fā)的7個(gè)技巧
  2. 2010年最受歡迎的Windows免費(fèi)應(yīng)用程序
  3. 配置Java應(yīng)用程序
  4. C#屏幕保護(hù)程序步驟
  5. 詳解C#制作屏幕保護(hù)
  6. 用C#Builder編寫屏幕保護(hù)程序
責(zé)任編輯:韓亞珊 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2021-10-11 09:00:00

云原生Kubernetes安全

2009-06-29 14:19:50

2020-08-25 14:03:20

應(yīng)用程序屏蔽應(yīng)用程序內(nèi)保護(hù)網(wǎng)絡(luò)攻擊

2009-04-06 08:20:31

AndroidGoogle移動(dòng)OS

2009-04-04 08:54:07

2009-08-24 14:19:27

C# Windows應(yīng)

2019-10-23 16:00:28

Windows 10屏幕保護(hù)灰色

2022-02-16 12:03:02

區(qū)塊鏈移動(dòng)應(yīng)用數(shù)字交易

2011-08-18 09:47:42

2022-08-30 20:00:37

零信任Linkerd

2009-08-13 17:15:44

C#屏幕保護(hù)程序

2009-08-24 13:30:50

C# Windows

2009-08-24 13:40:58

C# Windows

2013-07-30 13:38:27

Windows PhoWindows Pho

2009-08-24 16:02:10

C# Windows應(yīng)

2012-07-23 15:16:53

Windows 8Windows Sto

2012-12-25 09:52:22

Windows 8

2013-07-31 14:50:32

Windows PhoWP應(yīng)用程序生命周期

2012-10-09 10:12:57

Windows 8應(yīng)用程序

2012-03-09 17:30:28

ibmdw
點(diǎn)贊
收藏

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