您的位置:首页 > 其它

讹传的Win7睡眠(待机)快捷方式“rundll32.exe powrprof.dll,SetSuspendState 0,1,0”

2011-07-11 11:58 274 查看
1,SetSuspendState不是为rundll32设计的。无法仅用一行rundll32睡眠。可以先取消休眠选项……,那是另话。

2,想仅用一行rundll32休眠,如下即可,不必带参数。

rundll32.exe powrprof.dll,SetSuspendState

如下煞有介事的写法,也是臆想的:

rundll32.exe powrprof.dll,SetSuspendState Hibernate

rundll32.exe powrprof.dll,SetSuspendState Sleep

解释机理:

SetSuspendState函数

BOOL WINAPI SetSuspendState(BOOL Hibernate,BOOL ForceCritical,BOOL DisableWakeEvent);

简而言之,第一个参数为TRUE,则休眠。为FALSE,则睡眠(待机)。

rundll32接受的函数原型

void CALLBACK EntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow);

运行rundll32时,一个进程被开启,该进程(的线程)创建一个隐藏的窗口,该窗口句柄(不会为0)做为第一个参数被传入所调用的函数。讹传的“0,1,0”,是做为第三个参数的。

如果原型不符合,rundll32就生搬硬套,于是:

SetSuspendState((BOOL)hwnd, (BOOL)hinst, (BOOL)"0,1,0");
因为第一个参数总是被转换为TRUE,所以总是休眠。因为第二、三个参数也总是被转换为TRUE,所以只有一个结果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: