Windows10でスクリーンセーバーを防止・回避する

はじめに

Windows10のスクリーンセーバーを「Windowsの設定変更なし」「追加ソフトウェアなし」「マウス・キー入力への悪影響なし」で防止・回避します。具体的には、PowerShell+移動量0のマウス移動イベントで実現します。

※想定しきれていない悪影響があった場合、ご連絡いただければ幸いです。

コード

AvoidScreenSaver.ps1# AvoidScreenSaver.ps1 v1
# 移動量0のマウス移動イベントを周期的に発火してスクリーンセーバーを防止する。
# see https://www.bugbugnow.net/2020/10/avoid-screen-saver.html


# スリープ秒数
$SleepSeconds = 50

# クラスの定義
# see https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-mouse_event
$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 "AvoidScreenSaver を起動しました。"
echo "[Ctrl+C] で終了します。"
while ($true) {
  # スリープ
  Start-Sleep -s $SleepSeconds

  # 移動量0のマウス移動イベント(スクリーンセーバー・スリープ対策)
  $MouseEvent::mouse_event(1, 0, 0, 0, 0)
}

保存・起動・終了

  • 上記のコードを「ps1の拡張子」「UTF-8BOMありの文字コード」で保存する
    • コピー・ペーストできない環境では、最悪紙に印刷して、手入力して下さい
    • 行頭が#で始まる行は、コメント行であるため、入力は不要です
    • 手入力する場合、事前にPowerShellの動作確認しておくことをおすすめします
  • [保存したファイルを右クリック] > [PowerShellで実行] で実行する
  • コマンドプロントから「powershell -NoProfile -ExecutionPolicy Unrestricted .\AvoidScreenSaver.ps1」で実行する
  • 立ち上がった黒いウィンドウに対して [Ctrl+C] 入力で終了する

※自動起動することは可能ですが、ここでは取り扱いません。
※ウィンドウを非表示することは可能ですが、ここでは取り扱いません。
 「PowerShell ウィンドウ 非表示」あたりでググれば答えにたどり着けます。  

別解

  • WindowsMediaPlayerをミュートで連続再生し続ける
    • メディアプレーヤーは、再生中にスクリーンセーバーを表示しないオプションがデフォルトで設定されています
  • MicrosoftPowerPointをスライドショーで表示し続ける
    • [リボン] > [スライドショー] > [スライドショー設定]
      • 種類の [出席者として参照する(ウィンドウ表示)] を設定する
      • フルスクリーンではなく、ウィンドウで表示できる
  • マウスを定期的に(左右に1ドット)移動させる
  • シフトキーを定期的に押下する

備考(Windows10でスクリーンセーバーを無効にする方法)

  • スクリーンセーバー設定を変更する
    • [スタートメニュー] > [設定] > [個人設定] > [ロック画面] > [スクリーンセーバー設定]
    • [デスクトップを右クリック] > [個人設定] > [ロック画面] > [スクリーンセーバー設定]
      • スクリーンセーバーの選択プルダウンを [なし] に設定する
      • [OK]又は[適用]を選択する
  • ローカルグループポリシーを変更する
    • [スタートメニューを右クリック] > [ファイル名を指定して実行]
      • gpedit.msc」を入力する
      • ローカルグループポリシーエディター
        • [ローカルコンピューターポリシー] > [ユーザーの構成] > [管理用テンプレート] > [コントロールパネル] > [個人用設定] > [スクリーンセーバーを有効にする] を [無効] に設定する
  • レジストリを設定する
    • [スタートメニューを右クリック] > [ファイル名を指定して実行]
      • regedit」を入力する
      • レジストリーエディター
        • HKEY_CURRENT_USER\Control Panel\Desktop
          • 名前:ScreenSaveActive
          • 種類:REG_SZ
          • データ:0(無効)、1(有効)
          • 1→0に変更する

参考

コメント