AhDung

/*追求代码质量的野生码农*/

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

----------------201607041343更新----------------

在另一台电脑上SetSystemPowerState又不好使了,执行了根本没反应。又回头来试SetSuspendState,这次干脆把第一个参数改为1,居然成了。可文档明明说为true是休眠,false是睡眠,难道文档有严重错误?

----------------20160628原文----------------

一直喜欢用【休眠】,但如果离开的时长有点尴尬,既不想开着机无谓耗电,又不想动用休眠伤硬盘,【睡眠】就成了一种合适的选择。在XP/WIN7等桌面系统下,是可以很方便的进行睡眠/休眠操作的,开始菜单里点就是。但在服务器系统下,比如win2k8r2,就不是那么方便了,在开始菜单中找不到现成选项,我能想到的最便捷的办法就是在桌面建个快捷方式,双击就执行睡或休。休眠的快捷方式容易建,命令行工具shutdown.exe直接支持休眠操作,将快捷方式的目标写成如下就好:

%windir%\System32\shutdown.exe /h /f /t 0

但睡眠咋办,网上搜到可以用rundll32调SetSuspendState这个API实现,根据MSDN,该API的第1个参数只要为0,就是睡眠模式,其余俩参数随意,所以按说只要写成这样即可:

%windir%\System32\rundll32.exe PowrProf.dll,SetSuspendState 0,0,0

但在我的电脑上跑,就是休眠,并非睡眠,尝试过改动参数仍然如此。好在文档里提到了另一个类似功能的API:SetSystemPowerState,根据MSDN,该API只有俩参数,第1个参数设为1是睡眠,第2个参数没用,所以将快捷方式的目标写成这样:

%windir%\System32\rundll32.exe Kernel32.dll,SetSystemPowerState 1,0

一试就成,是我要的睡眠,问题搞掂。文档中说该API后续可能被废,建议改用上面的SetSuspendState~呵呵。

-文毕-

posted on 2016-06-28 19:39  ahdung  阅读(1251)  评论(1编辑  收藏  举报