はじめに
Windows10のスクリーンセーバーを「Windowsの設定変更なし」「追加ソフトウェアなし」「マウス・キー入力への悪影響なし」で防止・回避します。具体的には、PowerShell+移動量0のマウス移動イベントで実現します。
※想定しきれていない悪影響があった場合、ご連絡いただければ幸いです。
コード
AvoidScreenSaver.ps1# AvoidScreenSaver.ps1 v1.1
# 移動量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.ps1 started."
echo "[Ctrl+C] Press to exit."
while ($true) {
# スリープ
Start-Sleep -s $SleepSeconds
# 移動量0のマウス移動イベント(スクリーンセーバー・スリープ対策)
$MouseEvent::mouse_event(1, 0, 0, 0, 0)
}
変更履歴
日付 | バージョン | 備考 |
---|---|---|
2020/10/03 | v1 | 初版 |
2021/01/13 | v1.1 | 処理内の全角文字を半角文字に変更(UTF-8BOMなし対応) |
使い方(保存・起動・終了)
- 上記のコードを「ファイル名
AvoidScreenSaver.ps1
」「UTF-8BOMありの文字コード」で保存する- コピー・ペーストできない環境では、最悪紙に印刷して、手入力して下さい
- 行頭が
#
で始まる行は、コメント行であるため、入力は不要です - 手入力する場合、事前にPowerShellの動作確認しておくことをおすすめします
- 行頭が
- コピー・ペーストできない環境では、最悪紙に印刷して、手入力して下さい
- 起動する
- コマンドプロントから「
powershell -NoProfile -ExecutionPolicy Unrestricted .\AvoidScreenSaver.ps1
」で実行する - [保存したファイルを右クリック] > [PowerShellで実行] で実行する
- コマンドプロントから「
- 立ち上がった黒いウィンドウに対して [Ctrl+C] 入力で終了する
※自動起動することは可能ですが、ここでは取り扱いません。
※ウィンドウを非表示することは可能ですが、ここでは取り扱いません。
「PowerShell ウィンドウ 非表示」あたりでググれば答えにたどり着けます。
別解
- WindowsMediaPlayerをミュートで連続再生し続ける
- メディアプレーヤーは、再生中にスクリーンセーバーを表示しないオプションがデフォルトで設定されています
- MicrosoftPowerPointをスライドショーで表示し続ける
- [リボン] > [スライドショー] > [スライドショー設定]
- 種類の [出席者として参照する(ウィンドウ表示)] を設定する
- フルスクリーンではなく、ウィンドウで表示できる
- [リボン] > [スライドショー] > [スライドショー設定]
- マウスを定期的に(左右に1ドット)移動させる
- マウスふるふる
- 「マウスふるふる」の機能を実現するPowerShellスクリプトを作ってみる
- 悪影響:作業中にマウスが勝手に動く
- シフトキーを定期的に押下する
- VBSを利用した自動的にスクリーンセーバーが起動しない対応
- 悪影響:押下中のシフトキーをキャンセルされることがある
- 例:[Shift+A]を押下し続けると、「AAA...」の入力が途中から「Aaa...」になる
- 悪影響:ジョークプログラムとしてウイルス対策ソフトに検出されることがある
- 筆者環境で上記のVBSコードが Windows Defender に検出されました
- Joke:VBS/Trier.A
- 筆者環境で上記のVBSコードが Windows Defender に検出されました
備考(Windows10でスクリーンセーバーを無効にする方法)
- スクリーンセーバー設定を変更する
- [スタートメニュー] > [設定] > [個人設定] > [ロック画面] > [スクリーンセーバー設定]
- [デスクトップを右クリック] > [個人設定] > [ロック画面] > [スクリーンセーバー設定]
- スクリーンセーバーの選択プルダウンを [なし] に設定する
- [OK]又は[適用]を選択する
- ローカルグループポリシーを変更する
- [スタートメニューを右クリック] > [ファイル名を指定して実行]
- 「
gpedit.msc
」を入力する - ローカルグループポリシーエディター
- [ローカルコンピューターポリシー] > [ユーザーの構成] > [管理用テンプレート] > [コントロールパネル] > [個人用設定] > [スクリーンセーバーを有効にする] を [無効] に設定する
- 「
- [スタートメニューを右クリック] > [ファイル名を指定して実行]
- レジストリを設定する
- [スタートメニューを右クリック] > [ファイル名を指定して実行]
- 「
regedit
」を入力する - レジストリーエディター
HKEY_CURRENT_USER\Control Panel\Desktop
- 名前:ScreenSaveActive
- 種類:REG_SZ
- データ:0(無効)、1(有効)
- 1→0に変更する
- 「
- [スタートメニューを右クリック] > [ファイル名を指定して実行]