----------------201607041343更新----------------
在另一台电脑上SetSystemPowerState又不好使了,执行了根本没反应。又回头来试SetSuspendState,这次干脆把第一个参数改为1,居然成了。可文档明明说为true是休眠,false是睡眠,难道文档有严重错误?
----------------20160628原文----------------
一直喜欢用【休眠】,但如果离开的时长有点尴尬,既不想开着机无谓耗电,又不想动用休眠伤硬盘,【睡眠】就成了一种合适的选择。在XP/WIN7等桌面系统下,是可以很方便的进行睡眠/休眠操作的,开始菜单里点就是。但在服务器系统下,比如win2k8r2,就不是那么方便了,在开始菜单中找不到现成选项,我能想到的最便捷的办法就是在桌面建个快捷方式,双击就执行睡或休。休眠的快捷方式容易建,命令行工具shutdown.exe直接支持休眠操作,将快捷方式的目标写成如下就好:
%windir%System32shutdown.exe /h /f /t 0
但睡眠咋办,网上搜到可以用rundll32调SetSuspendState这个API实现,根据MSDN,该API的第1个参数只要为0,就是睡眠模式,其余俩参数随意,所以按说只要写成这样即可:
%windir%System32 undll32.exe PowrProf.dll,SetSuspendState 0,0,0
但在我的电脑上跑,就是休眠,并非睡眠,尝试过改动参数仍然如此。好在文档里提到了另一个类似功能的API:SetSystemPowerState,根据MSDN,该API只有俩参数,第1个参数设为1是睡眠,第2个参数没用,所以将快捷方式的目标写成这样:
%windir%System32 undll32.exe Kernel32.dll,SetSystemPowerState 1,0
一试就成,是我要的睡眠,问题搞掂。文档中说该API后续可能被废,建议改用上面的SetSuspendState~呵呵。
-文毕-