如何使用BCB讓WinXP進入休眠(Hibernation) |
答題得分者是:CuteBabyBoy
|
LeonSun
一般會員 ![]() ![]() 發表:5 回覆:9 積分:2 註冊:2003-10-17 發送簡訊給我 |
|
CuteBabyBoy
初階會員 ![]() ![]() 發表:18 回覆:97 積分:48 註冊:2003-07-11 發送簡訊給我 |
Dear LeonSun 您可以參考下的程式
void __fastcall AdjustToken(void) { HWND Handle_1 = GetCurrentProcess(); HWND Handle_2; LUID ID; TOKEN_PRIVILEGES Data; OpenProcessToken(Handle_1,TOKEN_ADJUST_PRIVILEGES,&Handle_2); LookupPrivilegeValue("","SeShutdownPrivilege",&ID); Data.PrivilegeCount = 1; Data.Privileges[0].Luid = ID; Data.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(Handle_2,false,&Data,NULL,NULL,NULL); } //--------------------------------------------------------------------------- void __fastcall SystemShutdown(void) { AdjustToken(); ExitWindowsEx(EWX_POWEROFF,0); } //--------------------------------------------------------------------------- void __fastcall SystemSuspend(void) { AdjustToken(); SetSystemPowerState (true, true); } //--------------------------------------------------------------------------- void __fastcall SystemSleep(void) { AdjustToken(); SetSystemPowerState (false, false); } //---------------------------------------------------------------------------在執行程式前要注意兩點 1. 在控制台 -> 顯示 -> 螢幕保護裝置 -> 電源 -> 休眠 內 要先啟用休眠...不然會有問題 2. 如果您是在 Embedded 下 Run 休眠...要注意硬碟的 Jump 要嚴謹 因為我發生過回來會掛掉的狀況... 調好 Jump 就比較沒事 Baby |
LeonSun
一般會員 ![]() ![]() 發表:5 回覆:9 積分:2 註冊:2003-10-17 發送簡訊給我 |
|
CuteBabyBoy
初階會員 ![]() ![]() 發表:18 回覆:97 積分:48 註冊:2003-07-11 發送簡訊給我 |
引言: 感謝CuteBabyBoy兄的大力支援,我試過您的範例的確好用的很,我可否貪得無饜的再問您 在控制台 -> 顯示 -> 螢幕保護裝置 -> 電源 -> 休眠 這個機制可有法子可以Always Enabled,因為我不知道使用者是否知道這個機制而我也必須要進這個ACPI模式,可否請您再次賜教。這個啟動休眠的選項...我猜您在 Regedit 內找找看吧 ( 我猜啦 ),因為我執行程式前的先決條件是已經 Enabled ,所以我就不用擔心這個設定 那有找那個關鍵字...這可能真的要查書了...(目前我還沒找到) 但您但 Enabled 了...就會一直 Save ~~ 所以不用擔心會更改 希望能幫上您的忙...功力不夠的地方請見諒...^^ Baby |
LeonSun
一般會員 ![]() ![]() 發表:5 回覆:9 積分:2 註冊:2003-10-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |