Windows 10でアプリ実行中に画面をスリープ状態にしない方法

特定のアプリの実行中のみディスプレイをアクティブ状態に保つには、Windowsにディスプレイをオンのままにするよう要求し、アプリを起動し、そのプロセスが終了するのを待ってから要求をクリアする小さなPowerShellラッパーを使用します。これにより、アクティブな電源プランを変更したり、どのタイムアウト値を復元すべきかを推測したりする必要がなくなります。また、この例では、自動スリープによってディスプレイがオフになるため、Windowsにスリープ状態にならないように要求しています。

ラッパーの役割

Windows は、SetThreadExecutionStateアイドル状態のディスプレイがシャットダウンするのを避ける必要があるアプリに対応しています。はES_DISPLAY_REQUIRED、ディスプレイの点灯を要求し、ES_SYSTEM_REQUIREDWindows がスリープ状態になるのを防ぎ、ES_CONTINUOUS要求がクリアされるまで保持します。スクリプトは、選択されたプロセスを待機し、 のフラグをクリアします。Microsoftの API ドキュメントをfinally参照してください。

このラッパーは電源プランのタイムアウトを変更せず、スクリプトの実行で要求が終了します。手動スリープ、ノートパソコンの蓋を閉じた状態、バッテリー残量低下時の保護機能を上書きすることはできず、スクリーンセーバーも抑制しません。Windowsをスリープ状態にしない状態を維持すると、特にバッテリー駆動時にはより多くの電力を消費します。

1. アプリの実行ファイルを見つける

アプリの実際の実行ファイルを使用してください.exe。スタートメニューのショートカットやドキュメントは使用しないでください。この例では、メモ帳を使用しています。別のプログラムを使用する場合は、ショートカットのプロパティC:\Windows\System32\notepad.exeを開き、 「ターゲット」をコピーして、アプリの実行ファイルを指していることを確認してください。

シングルインスタンスアプリの場合は、まず既存のインスタンスを閉じてください。ラッパーは起動したプロセスのみを待機するため、古いウィンドウに処理を引き継ぐランチャーは早すぎるタイミングで終了してしまう可能性があります。その場合は、アプリの長時間実行実行ファイルを使用してください。

2. PowerShellスクリプトを作成して保存する

メモ帳を開いて、このスクリプトを貼り付けてください。指定したパスのアプリケーションを起動し、そのプロセスが終了するまで待機し、起動が失敗した場合でも、その後Windowsの要求をクリアします。

param(
    [Parameter(Mandatory = $true)]
    [ValidateScript({ Test-Path -LiteralPath $_ -PathType Leaf })]
    [string]$AppPath
)

Add-Type -TypeDefinition @'
using System.Runtime.InteropServices;
public static class DisplayAwake {
    [DllImport("kernel32.dll", SetLastError = true)]
    public static extern uint SetThreadExecutionState(uint esFlags);
}
'@

$ES_CONTINUOUS = [uint32]2147483648
$ES_SYSTEM_REQUIRED = [uint32]1
$ES_DISPLAY_REQUIRED = [uint32]2
$flags = [uint32]($ES_CONTINUOUS -bor $ES_SYSTEM_REQUIRED -bor $ES_DISPLAY_REQUIRED)

try {
    $previousState = [DisplayAwake]::SetThreadExecutionState($flags)
    if ($previousState -eq 0) {
        throw "Windows did not accept the execution-state request."
    }
    $process = Start-Process -FilePath $AppPath -PassThru
    $process.WaitForExit()
}
finally {
    [void][DisplayAwake]::SetThreadExecutionState($ES_CONTINUOUS)
}

ファイル > 名前を付けて保存を選択し、例えば のようなシンプルな場所に保存してC:\Scripts\KeepDisplayAwake.ps1、ファイルの種類を「すべてのファイル (*.*)」に設定します。.ps1拡張子は自分で追加してください。そうしないと、メモ帳が を追加する可能性があります.txt。ダイアログにエンコードオプションがある場合は、UTF-8 を使用してください。

ファイル名フィールドに KeepDisplayAwake.ps1 と入力し、すべてのファイルを選択した状態でメモ帳の「名前を付けて保存」ダイアログを開く。
ヘルパーファイルを拡張子.ps1で保存し、「すべてのファイル」を選択して、メモ帳が拡張子.txtを追加しないようにしてください。

3. ラッパーを通してアプリを実行する

WindowsキーとRキーを同時に押して「ファイル名を指定して実行」ダイアログを開くか、通常のコマンドプロンプトを開き、以下のコマンドを入力してください。スクリプトの場所と実行ファイルのパスは、お使いのPCに合わせて変更してください。

powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\Scripts\KeepDisplayAwake.ps1" -AppPath "C:\Windows\System32\notepad.exe"

-ExecutionPolicy Bypassこの変更は、この PowerShell プロセスのみに影響し、マシンのポリシーを永続的に変更するものではありません。職場や学校のポリシーによっては、スクリプトの実行がブロックされる場合があります。理解できるコードのみを実行し、ブロックされた場合は管理者の指示に従ってください。

Windows PowerShell で KeepDisplayAwake.ps1 を実行し、AppPath に Notepad 実行可能ファイルのパスを指定します。
-AppPath の後に実行可能ファイルの完全なパスを指定してください。スペースを含むパスは引用符で囲んでください。

4. アプリでリクエストが終了することを確認します

起動したプロセスが開いている間、PowerShell は処理を続けます。プロンプトに戻るにはアプリを閉じます。finallyブロックによって要求がクリアされます。PowerShell を先に閉じると、アプリが開いたままでも要求は終了します。

通常の画面オフ間隔を超えてアプリを開いたままにしてテストしてください。画面がオフになった場合は、コンソールがまだビジー状態であること、パスが長時間実行される実行ファイルを指していること、および手動スリープや管理ポリシーによって上書きされていないことを確認してください。

PowerShellコンソールの横にメモ帳が開いており、KeepDisplayAwake.ps1コマンドがまだ実行されている。
ヘルパーはアプリの横でアクティブな状態を維持し、アプリを閉じるとPowerShellに制御が戻ります。

スクリーンセーバーの設定は別途確認してください。

実行状態要求ではスクリーンセーバーは停止しません。[設定] > [個人用設定] > [ロック画面]を開き、[スクリーンセーバー設定] を選択します。 [なし]に設定するか、必要に応じて待機時間を調整します。操作がない後に PC をロックしたい場合は、[サインイン再開] を有効にしてください。詳細については、Microsoft のスクリーンセーバーに関する説明を参照してください。

Windows 10のロック画面設定(スクリーンセーバー設定ダイアログを開き、スクリーンセーバーを「なし」に設定)
スクリーンセーバーには独自の設定があり、画面表示要求がアクティブな状態でも表示される場合があります。

以前使っていたタイムアウト変更用のバッチファイルを使ってみてはどうでしょうか?

powercfg /change monitor-timeout-acこのコマンドは、アクティブな電源プランの接続済みディスプレイのタイムアウト時間を分単位で変更します。これは一時的なアプリ要求ではありません。推測値を復元すると、ユーザーの実際の設定が上書きされる可能性があり、AC 専用コマンドではバッテリーモードはカバーされません。Microsoft はpowercfg リファレンスで AC と DC の両方のオプションについて説明しています。1 つのアプリセッションにはラッパーを使用し、タイムアウトを永続的に変更するには Windows の電源設定を使用してください。

トラブルシューティング

  • アプリは起動するものの、画面がスリープ状態のままの場合: PowerShell ウィンドウがスクリプトによって占有されていることを確認してください。すぐにプロンプ​​トに戻った場合は、実行ファイルがリクエストを転送した後に終了するランチャーである可能性があります。
  • PowerShell によると、アプリのパスが見つかりません。パスのスペルと引用符を確認してください-AppPath。スペースを含むパスは引用符で囲む必要があります。
  • Windows はこのスクリプトをブロックします。デバイスの実行ポリシーに従ってください。このラッパーのためだけに、管理ポリシーを変更したり、永続的な無制限ポリシーを設定したりしないでください。
  • スクリーンセーバーが起動する場合は、上記のロック画面設定を使用してスクリーンセーバーを個別に調整してください。APIリクエストではスクリーンセーバーは無効になりません。

コメントを残す

FotoSketcherで写真を絵画、スケッチ、漫画に変換

FotoSketcherで写真を絵画、スケッチ、漫画に変換

FotoSketcher Studioを使えば、写真を絵画、鉛筆画、漫画に変換できます。エフェクトの選択方法、プレビューの調整方法、作品の保存方法を学びましょう。

オーディオ識別ツールで音声ファイルを詳細に分析・識別する

オーディオ識別ツールで音声ファイルを詳細に分析・識別する

オーディオ識別子がビットレート、エンコーダー、タグについて何を明らかにするのか、従来のワークフローがどのように機能するのか、そして現在利用可能なツールの中で、ファイルの検査や楽曲の識別に使えるものはどれなのかを学びましょう。

My Photo Index:Windows用オープンソース写真整理ツール

My Photo Index:Windows用オープンソース写真整理ツール

My Photo Indexは、ローカル画像のタグ付け、評価、閲覧を行うための、Windows向けの旧来の写真カタログツールです。その機能、互換性の制限、および現在もサポートされている代替ツールについてご確認ください。

Attribute Changerを使用してファイルとフォルダの属性、日付、時刻を変更する

Attribute Changerを使用してファイルとフォルダの属性、日付、時刻を変更する

Attribute Changerを使用して、Windowsファイルの属性とタイムスタンプを編集したり、JPEG EXIF写真の日付を更新したり、バッチ変更を安全にプレビューしたりする方法を学びましょう。

Windows 10で各モニターに異なる壁紙を設定する方法

Windows 10で各モニターに異なる壁紙を設定する方法

Windows 10の各モニターに個別の壁紙を設定し、ディスプレイを識別し、画像のフィットを調整し、モニターの選択肢が見つからない場合のトラブルシューティングを行います。

pViewer:最小限の画像ビューアとマンガ&コミックリーダー

pViewer:最小限の画像ビューアとマンガ&コミックリーダー

pViewerの機能、写真モードとコミックモードの仕組み、ダウンロードすべきWindows版、そして旧バージョンと改訂版の違いについて学びましょう。

NeoDownloader:パラメータ設定とウェブサイトからの画像の一括ダウンロード

NeoDownloader:パラメータ設定とウェブサイトからの画像の一括ダウンロード

NeoDownloaderプロジェクトの作成方法、クロール範囲の選択方法、画像フィルタと保存先の設定方法、バッチダウンロードの確認方法を学びましょう。

Windows 7および8でホットキーを使って次のデスクトップ背景に切り替える方法

Windows 7および8でホットキーを使って次のデスクトップ背景に切り替える方法

Windows 7または8用のスライドショーを設定し、簡単なVBScriptショートカットを作成して、キーボードショートカットキーを割り当てて次の壁紙に進めるようにします。

XnConvert:エフェクトの適用と画像フォーマットの一括変換

XnConvert:エフェクトの適用と画像フォーマットの一括変換

XnConvertを使えば、エフェクトの適用、写真のリサイズ、画像フォーマットの一括変換が可能です。出力設定の選択、編集内容のプレビュー、オリジナル画像の保護も行えます。

PickMeApp: 保存された設定でWindowsプログラムを転送する

PickMeApp: 保存された設定でWindowsプログラムを転送する

PickMeAppを使って、インストール済みのWindowsアプリケーションを別のPCに移行しましょう。TAPパッケージの仕組み、設定の取得方法、転送できない可能性のある項目について学びます。