資源簡介
1.功能簡介:
這是一款運行于Windows下的控制臺應用程序,它可以根據用戶指定的參數不停地自
動切換電腦到睡眠或者休眠模式,并于一定時間之后自動喚醒。它可以省去在測試的過程中
需要手動不停地讓電腦睡眠(休眠)并喚醒的麻煩,解放了測試人員的雙手,節約了測試時
間,提高了工作效率。
2.命令格式:
..\SleepAndWakeupAssistant.exe [slpMode] [slpTimes] [wkpInterval]
參數:(1)slpMode為睡眠模式(s/S-睡眠,h/H-休眠),指需要電腦進入睡眠模式
還是休眠模式;
(2)slpTimes為睡眠喚醒次數(正整數,單位:次),指需要電腦自動睡眠
并喚醒的次數;
(3)wkpInterval為喚醒時間(正整數,單位:秒),指從開始睡眠(休眠)
到開始喚醒之間間隔的時間。

代碼片段和文件信息
//文件:SleepAndWakeupAssistant.cpp
//作者:chenx
//日期:2013/06/03
#include?
#include?
#include?
#include?
using?namespace?std;
//獲取睡眠(休眠)權限
BOOL?getPrivilegeToSleep()
{
HANDLE?hToken;?
TOKEN_PRIVILEGES?tkp;?
//?Get?a?token?for?this?process.?
if?(!OpenProcessToken(GetCurrentProcess()?
TOKEN_ADJUST_PRIVILEGES?|?TOKEN_QUERY?&hToken))?
return(?FALSE?);?
//?Get?the?LUID?for?the?shutdown?privilege.?
LookupPrivilegeValue(NULL?SE_SHUTDOWN_NAME?
&tkp.Privileges[0].Luid);?
tkp.PrivilegeCount?=?1;??//?one?privilege?to?set????
tkp.Privileges[0].Attributes?=?SE_PRIVILEGE_ENABLED;?
//?Get?the?shutdown?privilege?for?this?process.?
AdjustTokenPrivileges(hToken?FALSE?&tkp?0?
(PTOKEN_PRIVILEGES)NULL?0);?
if?(GetLastError()?!=?ERROR_SUCCESS)?
return?FALSE;?
return?TRUE;
}
//打印幫助信息
VOID?printHelpInformation()
{
cout?<“--------------------------------用法------------------------------------“?< cout?<“格式:..\\SleepAndWakeupAssistant.exe?[slpMode]?[slpTimes]?[wkpInterval]“?< cout?<“功能:根據指定的睡眠(休眠)喚醒時間間隔與睡眠(休眠)次數對電腦“?< cout?<“??????進行自動睡眠和自動喚醒“?< cout?<“參數:slpMode為睡眠模式(s/S-睡眠,h/H-休眠)“?< cout?<“??????slpTimes為睡眠喚醒次數(正整數,單位:次)“?< cout?<“??????wkpInterval為喚醒時間(正整數,單位:秒)“?< cout?<“------------------------------------------------------------------------“?<}
//一次睡眠(休眠)和喚醒
INT?doSleepAndWakeup(string?strSleepMode?INT?nWakeupInterval)
{
if?((strSleepMode?!=?“s“?&&?strSleepMode?!=?“h“?&&?strSleepMode?!=?“S“?&&?strSleepMode?!=?“H“)?||?nWakeupInterval?0)
{
#ifdef?_DEBUG
cout?<“輸入參數錯誤!“?<#endif
return?-1;
}
//獲取權限
if?(!getPrivilegeToSleep())
{
#ifdef?_DEBUG
cout?<“獲取睡眠(休眠)權限失敗!“?<#endif
return?-2;
}
//創建一個可等待的計時器對象
HANDLE?hTimer?=?CreateWaitableTimer(NULL?FALSE?L“WakeupTimer“);
if?(NULL?==?hTimer)
{
#ifdef?_DEBUG
cout?<“創建喚醒定時器對象失敗!“?<#endif
return?-3;
}
//設置定時器
LARGE_INTEGER?lnSleepTime;
lnSleepTime.QuadPart?=?(nWakeupInterval?+?20)?*?(-10000000LL);
if?(!SetWaitableTimer(hTimer?&lnSleepTime?0?NULL?NULL?TRUE))
{
#ifdef?_DEBUG
cout?<“設置自動喚醒失敗!“?<#endif
CloseHandle(hTimer);
return?-4;
}
else
{
if?(ERROR_NOT_SUPPORTED?==?GetLastError())
{
#ifdef?_DEBUG
cout?<“系統不支持自動喚醒!“?<#endif
CloseHandle(hTimer);
return?-5;
}
#ifdef?_DEBUG
cout?<“設置自動喚醒成功!“?<#endif
}
INT?nRestartInterval?=?20;
//睡眠倒計時
for?(INT?i?=?0;?i? {
cout?< Sleep(1000);
}
cout?<
//根據參數進入睡眠或休眠
if?(strSleepMode?==?“s“?||?strSleepMode?==?“S“)
{
if?(!SetSuspendState(FALSE?TRUE?FALSE))
{
#ifdef?_DEBUG
cout?<“設置系統睡眠失敗!“?<#endif
CloseHandle(hTimer);
return?-6;
}
}
else?
{
if?(!Set
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2024??2013-06-03?20:41??睡眠喚醒助手V1.0\Readme.txt
?????目錄???????????0??2014-09-18?14:17??睡眠喚醒助手V1.0\SourceFile\
?????文件????????5233??2013-06-03?20:31??睡眠喚醒助手V1.0\SourceFile\SleepAndWakeupAssistant.cpp
?????目錄???????????0??2014-09-18?14:17??睡眠喚醒助手V1.0\Ver2008Release\
?????文件???????13824??2013-06-03?21:05??睡眠喚醒助手V1.0\Ver2008Release\SleepAndWakeupAssistant.exe
?????目錄???????????0??2014-09-18?14:17??睡眠喚醒助手V1.0\
- 上一篇:席卡制作標準
- 下一篇:WinCE6.0華為3G模塊MC509驅動撥號上網實現步驟
評論
共有 條評論