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

澄城網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)從2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
OnMessage事件的定義如下:
- typedefvoid__fastcall(__closure
- *TMessageEvent)(tagMSG&Msg,bool&Handled);
- __propertyTMessageEventOnMessage=
- {read=FOnMessage,write=FOnMessage};
其中TMessageEvent類型是OnMessage事件的類型,它定義了處理消息的方法,Msg參數(shù)給出了Windows消息的相關(guān)信息,其結(jié)構(gòu)如下:
- typedefstructtagMSG{
- HWNDhwnd;
- UINTmessage;
- WPARAMwParam;
- LPARAMlParam;
- DWORDtime;
- POINTpt;}
Handled參數(shù)決定了如何對消息進行下一步處理,如果在接收到一個消息后將Handled參數(shù)設(shè)為true,則這個消息將不會得到進一步的處理,在本例中就是取消屏幕保護程序的激活。
啟動C Builder,新建一工程文件,在頭文件中的Private段增加對成員函數(shù)CaptureMessage的聲明:
- classTForm1:publicTForm
- {
- __published:
- private:
- void__fastcallCaptureMessage(tagMSG&Msg,bool&Handled);
- public:
- __fastcallTForm1(TComponent*Owner);
- };
在.cpp文件中增加CaptureMessage的定義:
- void__fastcallTForm1::CaptureMessage(tagMSG&Msg,bool&Handled)
- {
- if(Msg.message==WM_SYSCOMMAND&&Msg.wParam==SC_SCREENSAVE)
- Handled=true;//阻止屏幕保護的啟動
- else
- Handled=false;//進行該消息的缺省處理
- }
再將定義好的CaptureMessage函數(shù)作為OnMessage事件的事件處理器,將以下代碼加到主窗體的OnCreate事件處理器中:
- void__fastcallTForm1::FormCreate(TObject*Sender)
- {
- Application->OnMessage=CaptureMessage;
- }
編譯并運行程序,你可以事先將屏幕保護的等待時間設(shè)為一個盡可能小的值來檢驗程序的運行情況。你會發(fā)現(xiàn)在程序運行期間,屏幕保護程序?qū)o法被激活,關(guān)閉運行的程序后再等待一會兒,屏幕保護程序就會正常出現(xiàn)。以上代碼在C Builder3、win98環(huán)境中運行通過。
網(wǎng)頁標題:應(yīng)用程序禁止Windows屏幕保護
轉(zhuǎn)載注明:http://www.dlmjj.cn/article/dppecjs.html


咨詢
建站咨詢
