加载中
加载中
表情图片
评为精选
鼓励
加载中...
分享
加载中...
文件下载
加载中...
修改排序
加载中...
使用C语言让Windows睡眠/休眠
acmilan2017/09/07软件综合 IP:四川

使用C语言让Windows睡眠/休眠可以使用SetSystemPowerState函数,但是这个函数需要进程具有SE_SHUTDOWN_NAME(或者_T("SeShutdownPrivilege"))权限,这个权限默认是关闭的,需要手动打开。

Other
#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>

另一个方法是使用SetSuspendState,它不用调整权限,但是需要导入powrprof.h和powrprof.lib。

Other
#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>

[修改于 7年9个月前 - 2017/09/07 21:40:05]

来自:计算机科学 / 软件综合
0
新版本公告
~~空空如也

想参与大家的讨论?现在就 登录 或者 注册

所属专业
所属分类
上级专业
同级专业
acmilan
进士 学者 笔友
文章
461
回复
2934
学术分
4
2009/05/30注册,6年4个月前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:未同步
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的