资源简介

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 << “--------------------------------用法------------------------------------“ << endl;
cout << “格式:..\\SleepAndWakeupAssistant.exe [slpMode] [slpTimes] [wkpInterval]“ << endl;
cout << “功能:根据指定的睡眠(休眠)唤醒时间间隔与睡眠(休眠)次数对电脑“ << endl;
cout << “      进行自动睡眠和自动唤醒“ << endl;
cout << “参数:slpMode为睡眠模式(s/S-睡眠,h/H-休眠)“ << endl;
cout << “      slpTimes为睡眠唤醒次数(正整数,单位:次)“ << endl;
cout << “      wkpInterval为唤醒时间(正整数,单位:秒)“ << endl;
cout << “------------------------------------------------------------------------“ << endl << endl;
}

//一次睡眠(休眠)和唤醒
INT doSleepAndWakeup(string strSleepMode INT nWakeupInterval)
{
if ((strSleepMode != “s“ && strSleepMode != “h“ && strSleepMode != “S“ && strSleepMode != “H“) || nWakeupInterval < 0)
{
#ifdef _DEBUG
cout << “输入参数错误!“ << endl;
#endif
return -1;
}

//获取权限
if (!getPrivilegeToSleep())
{
#ifdef _DEBUG
cout << “获取睡眠(休眠)权限失败!“ << endl;
#endif
return -2;
}

//创建一个可等待的计时器对象
HANDLE hTimer = CreateWaitableTimer(NULL FALSE L“WakeupTimer“);
if (NULL == hTimer)
{
#ifdef _DEBUG
cout << “创建唤醒定时器对象失败!“ << endl;
#endif
return -3;
}

//设置定时器
LARGE_INTEGER lnSleepTime;
lnSleepTime.QuadPart = (nWakeupInterval + 20) * (-10000000LL);
if (!SetWaitableTimer(hTimer &lnSleepTime 0 NULL NULL TRUE))
{
#ifdef _DEBUG
cout << “设置自动唤醒失败!“ << endl;
#endif
CloseHandle(hTimer);
return -4;
}
else
{
if (ERROR_NOT_SUPPORTED == GetLastError())
{
#ifdef _DEBUG
cout << “系统不支持自动唤醒!“ << endl;
#endif
CloseHandle(hTimer);
return -5;
}
#ifdef _DEBUG
cout << “设置自动唤醒成功!“ << endl;
#endif
}

INT nRestartInterval = 20;
//睡眠倒计时
for (INT i = 0; i < nRestartInterval; ++i)
{
cout << nRestartInterval - i << “秒之后将进入睡(休)眠!(若要取消,请关闭本窗口)“ << endl;
Sleep(1000);
}
cout << endl;

//根据参数进入睡眠或休眠
if (strSleepMode == “s“ || strSleepMode == “S“)
{
if (!SetSuspendState(FALSE TRUE FALSE))
{
#ifdef _DEBUG
cout << “设置系统睡眠失败!“ << endl;
#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\

评论

共有 条评论