通常我们使用电脑过程中会设置多长时间不操作,电脑就会灭屏、睡眠甚至是休眠。 如果电脑进入睡眠或者休眠模式,电脑运行的程序将不再执行。 如果我们设计的桌面程序一直在执行某种操作,比如持续的usb通信,操作人可能会离开很久,这个时候,我们不希望电脑进入睡眠或者休眠模式。 那么该如何实现这一功能呢?
系统中相关接口文件是提供了这一功能,即调用如下方法即可:
[dllimport(kernel32)]private static extern executionstate setthreadexecutionstate(executionstate esflags);[flags]private enum executionstate : uint{ systemrequired = 0x01, displayrequired = 0x02, [obsolete(this value is not supported.)] userpresent = 0x04, awaymoderequired = 0x40, continues = 0x80000000,}如上所示,只需要设置系统状态即可,excutionstate各个枚举变量的含义为:systemrequired,强行设置系统idle计时器,使得系统一直处于工作态; displayrequired,通过重置显示器idle计时器,使得显示器一直处于显示状态; continues,系统状态维持当前状态,直到下一次方法调用或者标志位改变。
系统状态枚举变量
具体调用方法如下:
// 设置此线程此时开始一直将处于运行状态,此时计算机不应该进入睡眠状态。// 此线程退出后,设置将失效。// 如果需要恢复,请调用 方法。// // 表示是否应该同时保持屏幕不关闭。// 对于游戏、视频和演示相关的任务需要保持屏幕不关闭;而对于后台服务、下载和监控等任务则不需要。public static void presentforcurrentthread(bool keepdisplayon){ setthreadexecutionstate(keepdisplayon ? (executionstate.continues|executionstate.systemrequired | executionstate.displayrequired) : (executionstate.continues| executionstate.systemrequired));}//恢复此线程的运行状态,操作系统现在可以正常进入睡眠状态和关闭屏幕。public static void restoreforcurrentthread(){ setthreadexecutionstate(executionstate.continues);}// 重置系统睡眠或者关闭屏幕的计时器,这样系统睡眠或者屏幕能够继续持续工作设定的超时时间。// // 表示是否应该同时保持屏幕不关闭。// 对于游戏、视频和演示相关的任务需要保持屏幕不关闭;而对于后台服务、下载和监控等任务则不需要。public static void resetidle(bool keepdisplayon){ setthreadexecutionstate(keepdisplayon ? (executionstate.systemrequired | executionstate.displayrequired) : (executionstate.systemrequired));}因此,只要调用resetidle(true)就可以实现屏幕常亮并且系统运行正常。 如果要取消只要调用restoreforcurrentthread()即可。
基于单片机和传感器实现数字人体心率检测仪的应用方案
CoroWare机器人手臂:无人驾驶地面车辆和机器人开发平台的补充
OLED透明屏技术创新:透明度和对比度的进一步提升
走秀网CEO被抓!走秀网CEO涉嫌走私4亿奢侈品被捕,曾与唯品会齐名,网友却吐槽原来卖的都是正品
工信部:两项无人机领域国际标准正式发布
如何阻止电脑进入睡眠或者休眠
什么是条码设备
2021年人工智能的大发展
16位8通道同步采样的ADC-ADCS8162介绍
任正非谈华为接班人:家人子女永远不会接班
固态硬盘越来越火,带你更加详细的去了解它
博思艾伦获10亿美元合同,成美国政府最大网络安全提供商
MOSFET等大型焊盘的背面可以打过孔
pn结的特性,PN结的击穿特性,PN结的电容特性
VR技术在医疗方面的应用
罗纳论币:4.1BTC以及ETH行情走势分析及策略
安森美推出汽车功率集成模块方案用于下一代汽车无刷直流系统
高隔离DC/DC转换器提升电机运作的稳定性与安全性
泄漏电缆探测器与其它探测器的区别是什么
物联网时代逼近和云计算的魅力催促中国在数字化转型道路上的加速发展