スリープ解除されないようにスリープする

スリープ解除タイマが有効な場合、スリープを勝手に解除されることがあります。常にスリープを解除させたくない場合であれば、下記設定で、スリープ解除タイマを無効にすれば解決できます。

電源オプション⇒詳細な電源設定の変更⇒スリープのスリープ解除タイマの許可

もし、一時的にだけ、スリープ解除させたくない場合、下記のスクリプトを使うと便利です。SetSuspendState関数 を使っているのですが、引数を変えるとスリープ解除タイマを無効にしてスリープさせることができます。利用するには、下記のsleep.bat と sleep.ps1 を使います。2っのファイルをCドライブ直下のtestフォルダに移動し、batファイルをダブルクリックするとスリープします。

Universal Orchestrator

sleep.bat の中身

PowerShell.exe -ExecutionPolicy RemoteSigned "C:\test\sleep.ps1"

sleep.ps1の中身

$signature = @"
[DllImport("powrprof.dll")]
public static extern bool SetSuspendState(bool Hibernate,bool ForceCritical,bool DisableWakeEvent);
"@
$func = Add-Type -memberDefinition $signature -namespace "Win32Functions" -name "SetSuspendStateFunction" -passThru
$func::SetSuspendState($false,$false,$true)

 

sleep.ps1 は、下記サイトを参考にさせていただきました。

winscript.jp