使用C语言让Windows睡眠/休眠可以使用SetSystemPowerState函数,但是这个函数需要进程具有SE_SHUTDOWN_NAME(或者_T("SeShutdownPrivilege"))权限,这个权限默认是关闭的,需要手动打开。
<code class="language-c">#include <windows.h> #include <tchar.h> int _tmain(int argc, TCHAR **argv) { HANDLE token = NULL; TOKEN_PRIVILEGES tp = { 0 }; tp.PrivilegeCount = 1; LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tp.Privileges[0].Luid); tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &token); AdjustTokenPrivileges(token, FALSE, &tp, sizeof tp, NULL, NULL); CloseHandle(token); SetSystemPowerState(TRUE, FALSE); // 第一个参数TRUE睡眠,FALSE休眠 return 0; } </tchar.h></windows.h></code>
另一个方法是使用SetSuspendState,它不用调整权限,但是需要导入powrprof.h和XXXXXXXXXXXb。
<code class="language-cpp">#include <windows.h> #include <tchar.h> #include <powrprof.h> #pragma comment(lib, "powrprof.lib") int _tmain(int argc, TCHAR **argv) { SetSuspendState(FALSE, FALSE, FALSE); // 第一个参数FALSE睡眠,TRUE休眠 return 0; } </powrprof.h></tchar.h></windows.h></code>
[修改于 7年3个月前 - 2017/09/07 21:40:05]
时段 | 个数 |
---|---|
{{f.startingTime}}点 - {{f.endTime}}点 | {{f.fileCount}} |