让机器进入待机或休眠状态
2008-08-04 06:24
796 查看
系统待机 / 休眠
----------------------------------------------------------------------------------------------
DECLARE Long SetSuspendState IN PowrProf ;
Long Hibernate, Long ForceCritical, Long DisableWakeEvent
SetSuspendState( 0, 0, 0 )
三个参数的含义如下:
Hibernate - 0 / 1: 0 - 进入待机状态, 1 - 进入休眠状态
ForceCritical - 0 / 1: 0 - 不强行终止运行中的进程 / 强行终止
DisableWakeEvent - 0 / 1: 0 - 允许系统事件唤醒计算机 / 不允许
这个 dll 中也包含了用于检索系统电源能力的函数,其中有三个是:
IsPwrHibernateAllowed, IsPwrShutdownAllowed, IsPwrSuspendAllowed,看名字就知道是查什么的了,都不需要参数,但 MS 建议不要使用它们,以后的操作系统可能不再支持,建议使用 GetPwrCapabilities 来替代,这个函数的原型是:
BOOLEAN WINAPI GetPwrCapabilities(
__out PSYSTEM_POWER_CAPABILITIES lpSystemPowerCapabilities
);
其中用到的 SYSTEM_POWER_CAPABILITIES 结构定义为:
typedef struct { BOOLEAN PowerButtonPresent; BOOLEAN SleepButtonPresent; BOOLEAN LidPresent; BOOLEAN SystemS1; BOOLEAN SystemS2; BOOLEAN SystemS3; BOOLEAN SystemS4; BOOLEAN SystemS5; BOOLEAN HiberFilePresent; BOOLEAN FullWake; BOOLEAN VideoDimPresent; BOOLEAN ApmPresent; BOOLEAN UpsPresent; BOOLEAN ThermalControl; BOOLEAN ProcessorThrottle; BYTE ProcessorMinThrottle; BYTE ProcessorMaxThrottle; BOOLEAN FastSystemS4; BYTE spare2[3]; BOOLEAN DiskSpinDown; BYTE spare3[8]; BOOLEAN SystemBatteriesPresent; BOOLEAN BatteriesAreShortTerm; BATTERY_REPORTING_SCALE BatteryScale[3]; SYSTEM_POWER_STATE AcOnLineWake; SYSTEM_POWER_STATE SoftLidWake; SYSTEM_POWER_STATE RtcWake; SYSTEM_POWER_STATE MinDeviceWakeState; SYSTEM_POWER_STATE DefaultLowLatencyWake; } SYSTEM_POWER_CAPABILITIES, *PSYSTEM_POWER_CAPABILITIES; |
支持待机(SystrmS1-3),支持休眠(S4),支持软件关机(S5)
所以要判断是否已启用了休眠支持,可以这样写:
DECLARE Long GetPwrCapabilities IN PowrProf String @ lpSystemPowerCapabilities m.cSysPwrCap = REPLICATE( CHR(0), 128 ) GetPwrCapabilities( @ m.cSysPwrCap ) RETURN ( 0 != CTOBIN( SUBSTR( m.cSysPwrCap, 9, 1 ), '1rs' )) |
打开/关闭监视器
----------------------------------------------------------------------------------------------
DECLARE Long SendMessage IN WIN32API Long, Long, Long, Long
SendMessage( _vfp.hWnd, 0x112, 0xf170, 1 ) && 关闭监视器
INKEY(0)
SendMessage( _vfp.hWnd, 0x112, 0xf170, -1 ) && 打开监视器
相关文章推荐
- atheros ar9285 wireless network Adaper设备的驱动器正防止机器进入待机状态
- 电脑待机与休眠区别,XP系统如何进入休眠状态
- App运行时iPhone不会进入锁屏待机状态
- 利用win7的离线下载功能实现进入休眠状态也能下载
- 系统无法进入待机状态或待机无法唤醒
- 一行代码让App运行时iPhone不会进入锁屏待机状态
- 阻止屏幕变暗进入休眠状态
- 如何待机, 休眠, 关闭, 重新启动机器(MOBILE)
- 休眠与待机等状态面面观(S0,S1,S2,S3,S4,S5)
- Android系统进入待机状态,鼠标滑动不唤醒,点击右键唤醒
- 一行代码让App运行时iPhone不会进入锁屏待机状态
- windows电脑中的待机、休眠和睡眠状态的区别
- Qt实现屏保功能,鼠标一定时间无响应程序进入待机状态
- HLT 使CUP进入待机状态
- 一行代码让App运行时iPhone不会进入锁屏待机状态
- Qt实现屏保功能,鼠标一定时间无响应程序进入待机状态
- Ubuntu16.04进入挂起或休眠状态时按任何键都无法唤醒问题解决办法
- win8.1休眠状态下不能进入系统
- 【 Android】使手机屏幕常亮,不进入待机状态
- Qt实现屏保功能,鼠标一定时间无响应程序进入待机状态