【Windows】スクリーンセーバーが起動しないようにする
問題
スクリーンセーバーが5分で起動するので解除がちょっと面倒です。
スクリーンセーバーの発動を自動的に阻止することはできませんか。
答え
マウスイベントを4分ごとに発生させてスクリーンセーバーの実行を防ぐ例
以下を avoid-screensaver.bat などの名前でバッチファイルとして保存して、実行する。
@powershell -NoProfile -ExecutionPolicy Unrestricted "&([ScriptBlock]::Create((cat \"%~f0\" | ?{$_.ReadCount -gt 1}) -join \"`n\"))" %* & goto:eof $Signature = @' [DllImport("user32.dll")] public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo); '@ $MouseEvent = Add-Type -MemberDefinition $Signature -Name "Win32MouseEvent" -Namespace Win32Functions -PassThru echo "avoid screensaver started." echo "Press [Ctrl+C] to exit." while ($true) { Start-Sleep -s 240 $MouseEvent::mouse_event(1, 0, 0, 0, 0) }
黒い窓は出る(コマンドプロンプト)
終了するときは CTRL+C
最初からPwerShellで実行できるとよいが、拡張子を .ps1 にしてもダブルクリックで起動しないので、.bat にしてバッチファイルとして起動してPowerShellとして実行している。
PowerShell部分(2行目以降)を .ps1 で保存して、呼び出すショートカットを作ってもよい。リンク先を以下のようにするとショートカットダブルクリックで実行できる。
powershell -NoProfile -ExecutionPolicy RemoteSigned -File [PowerShellスクリプトのフルパス]
コメント