線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1531
推到 Plurk!
推到 Facebook!

禁止OS進入省電休眠模式

尚未結案
luckfox
一般會員


發表:34
回覆:40
積分:24
註冊:2002-10-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-03 07:31:58 IP:218.32.xxx.xxx 未訂閱
參考 http://groups.google.com/groups?hl=zh-TW&lr=&ie=UTF-8&oe=UTF-8&threadm=3c6480e3_2@dnews&rnum=11&prev=/groups?q="BROADCAST_QUERY_DENY"&hl=zh-TW&lr=&ie=UTF-8&oe=UTF-8&start=10&sa=N 測試了一下,發現雖然可以偵測的到休眠的Message,但是卻仍然無法阻止OS進入 休眠模式,可否請教一下,以下的寫法是否仍有問題,還是得要用HOOK來寫 class TForm1 : public TForm { __published: // IDE-managed Components private: // User declarations TWndMethod OldFormProc; void __fastcall NewFormProc(TMessage &Msg); public: // User declarations __fastcall TForm1(TComponent* Owner); }; __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { OldFormProc=Form1->WindowProc; Form1->WindowProc=NewFormProc; } void __fastcall TForm1::NewFormProc(TMessage &Msg) { switch(Msg.Msg) { case WM_POWERBROADCAST: if((Msg.WParam == PBT_APMQUERYSUSPEND)) { Msg.Result = BROADCAST_QUERY_DENY; Dispatch(&Msg); return; } break; } OldFormProc(Msg); }
miyu
中階會員


發表:13
回覆:96
積分:91
註冊:2003-05-01

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-05 10:52:13 IP:211.75.xxx.xxx 未訂閱
NT 應該是 call SetSystemPowerState 進去的. 其中第二個參數: fForce [in] Forced suspension. If TRUE, the function broadcasts a PBT_APMSUSPEND event to each application and driver, then immediately suspends operation. If FALSE, the function broadcasts a PBT_APMQUERYSUSPEND event to each application to request permission to suspend operation. 你可能要去看一下差異. force = true 好像是不能被攔截的... MSDN的說法是, OS給你20秒, 超過了就直接幹掉 process. --- 小葵..小葵有很多的夢想 等待薰下班回家, 並準備晚飯跟洗澡水 薰回家的時候, 對你說一聲 歡迎回家 在休息的日子, 兩個人坐在屋外的走廊上, 品嚐著我親自作的點心 薰如果累了, 替他搥搥肩; 冷了, 和薰一起擠著被爐 但是, 但是... 小葵最大的心願是...成為薰的..成為薰的妻子
系統時間:2024-05-04 17:02:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!