禁止OS進入省電休眠模式 |
尚未結案
|
luckfox
一般會員 發表:34 回覆:40 積分:24 註冊:2002-10-15 發送簡訊給我 |
參考
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 發送簡訊給我 |
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. ---
小葵..小葵有很多的夢想
等待薰下班回家, 並準備晚飯跟洗澡水
薰回家的時候, 對你說一聲 歡迎回家
在休息的日子, 兩個人坐在屋外的走廊上, 品嚐著我親自作的點心
薰如果累了, 替他搥搥肩; 冷了, 和薰一起擠著被爐
但是, 但是... 小葵最大的心願是...成為薰的..成為薰的妻子
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |