SetThreadExecutionState 関数 (winbase.h)
アプリケーションが使用中であることをシステムに通知し、アプリケーションの実行中にシステムがスリープ状態に入ったり、ディスプレイをオフにしたりできないようにすることができます。
構文
EXECUTION_STATE SetThreadExecutionState(
[in] EXECUTION_STATE esFlags
);
パラメーター
[in] esFlags
スレッドの実行要件。 このパラメーターには、次の 1 つ以上の値を指定できます。
戻り値
関数が成功した場合、戻り値は以前のスレッド実行状態になります。
関数が失敗した場合は、返される値は NULL です。
解説
システムは、ローカル キーボードやマウス入力、サーバー アクティビティ、ウィンドウフォーカスの変更などのアクティビティを自動的に検出します。 自動的に検出されないアクティビティには、ディスクまたは CPU アクティビティとビデオ表示が含まれます。
ES_CONTINUOUSなしで SetThreadExecutionState を呼び出すと、アイドル タイマーがリセットされます。ディスプレイまたはシステムを動作状態に保つには、スレッドは SetThreadExecutionState を定期的に呼び出す必要があります。
電源管理されたコンピューターで正常に実行するには、FAX サーバー、応答マシン、バックアップ エージェント、ネットワーク管理アプリケーションなどのアプリケーションで、イベントを処理するときに ES_SYSTEM_REQUIRED と ES_CONTINUOUS の両方を使用する必要があります。 ビデオ プレーヤーやプレゼンテーション アプリケーションなどのマルチメディア アプリケーションでは、ユーザー入力なしで長期間ビデオを表示する場合は、 ES_DISPLAY_REQUIRED を使用する必要があります。 ワード プロセッサ、スプレッドシート、ブラウザー、ゲームなどのアプリケーションでは、 SetThreadExecutionState を呼び出す必要はありません。
ES_AWAYMODE_REQUIRED値は、システムがスリープ状態にあるように見える間に、テレビコンテンツの記録や他のデバイスへのメディアのストリーミングなどのバックグラウンド タスクを実行する必要があるメディア アプリケーションで絶対に必要な場合にのみ使用する必要があります。 重要なバックグラウンド処理を必要としない、またはポータブル コンピューターで実行されるアプリケーションは、システムが真のスリープ状態に入ることで電力を節約できないため、離れたモードを有効にしないでください。
離れたモードを有効にするために、アプリケーションは ES_AWAYMODE_REQUIRED と ES_CONTINUOUS の両方を使用します。退席モードを無効にするには、アプリケーションは SetThreadExecutionState を ES_CONTINUOUS で呼び出し、 ES_AWAYMODE_REQUIREDをクリアします。 退席モードが有効になっている場合、コンピューターをスリープ状態にする操作では、代わりに退席モードになります。 システムがユーザー入力を必要としないタスクを引き続き実行している間、コンピューターはスリープ状態にあるように見えます。 退席モードはスリープ アイドル タイマーには影響しません。タイマーの有効期限が切れたときにシステムがスリープ状態にならないようにするには、アプリケーションで ES_SYSTEM_REQUIRED 値も設定する必要があります。
SetThreadExecutionState 関数を使用して、ユーザーがコンピューターをスリープ状態にできないようにすることはできません。 アプリケーションでは、ラップトップのカバーを閉じるか、電源ボタンを押したときに、ユーザーが特定の動作を期待することを尊重する必要があります。
この関数は、スクリーン セーバーの実行を停止しません。
例
// Television recording is beginning. Enable away mode and prevent
// the sleep idle time-out.
//
SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_AWAYMODE_REQUIRED);
//
// Wait until recording is complete...
//
//
// Clear EXECUTION_STATE flags to disable away mode and allow the system to idle to sleep normally.
//
SetThreadExecutionState(ES_CONTINUOUS);
要件
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | winbase.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |