首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在省电模式下检测

在省电模式下检测
EN

Stack Overflow用户
提问于 2014-02-27 13:20:19
回答 1查看 290关注 0票数 1

我在试着检测电脑何时进入省电模式。问题是,这个程序必须同时运行在Windows和7上。RegisterPowerSettingNotification只适用于Vista和更新版本,所以这不是一种选择。我也尝试过在SystemParametersInfo中使用SPI_GETSCREENSAVERRUNNING,但这并不适用于节电模式,而这正是计算机的实际设置。还有其他建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-04 14:34:20

要回答我自己的问题,获取屏幕保护程序超时和最后一次用户输入,并将两者进行比较,似乎是最好的方法:

代码语言:javascript
复制
int screenTimeout;
SystemParametersInfo(SPI_GETSCREENSAVETIMEOUT, NULL, &screenTimeout, SPIF_UPDATEINIFILE);
LASTINPUTINFO lastInput;
lastInput.cbSize = sizeof(LASTINPUTINFO);
GetLastInputInfo(&lastInput);
DWORD ticks = GetTickCount();
int lastInputTime = (ticks-lastInput.dwTime)/1000;

GetLastInputInfo返回自上次用户输入以来的滴答数。根据MSDN的说法,滴答发生在10-16毫秒之间,所以这不是一种精确的测量时间的方法,但对我来说已经足够了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22069789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档