SetThreadExecutionState 関数 (winbase.h)

アプリケーションが使用中であることをシステムに通知し、アプリケーションの実行中にシステムがスリープ状態に入ったり、ディスプレイをオフにしたりできないようにすることができます。

構文

EXECUTION_STATE SetThreadExecutionState(
  [in] EXECUTION_STATE esFlags
);

パラメーター

[in] esFlags

スレッドの実行要件。 このパラメーターには、次の 1 つ以上の値を指定できます。

説明
ES_AWAYMODE_REQUIRED
0x00000040
退席モードを有効にします。 この値は 、ES_CONTINUOUSで指定する必要があります。

退席モードは、コンピューターがスリープ状態にあるように見えるデスクトップ コンピューターで重要なバックグラウンド処理を実行する必要があるメディア記録およびメディア配布アプリケーションでのみ使用する必要があります。 「解説」を参照してください。

ES_CONTINUOUS
0x80000000
ES_CONTINUOUS を使用する 次の呼び出しと他の状態フラグの 1 つがクリアされるまで、設定されている状態を有効にしておく必要があることをシステムに通知します。
ES_DISPLAY_REQUIRED
0x00000002
ディスプレイアイドルタイマーをリセットして、ディスプレイを強制的にオンにします。
ES_SYSTEM_REQUIRED
0x00000001
システム アイドル タイマーをリセットして、システムを強制的に動作状態にします。
ES_USER_PRESENT
0x00000004
この値はサポートされていません。 ES_USER_PRESENTが他の esFlags 値と組み合わされている場合、呼び出しは失敗し、指定された状態は設定されません。

戻り値

関数が成功した場合、戻り値は以前のスレッド実行状態になります。

関数が失敗した場合は、返される値は NULL です。

解説

システムは、ローカル キーボードやマウス入力、サーバー アクティビティ、ウィンドウフォーカスの変更などのアクティビティを自動的に検出します。 自動的に検出されないアクティビティには、ディスクまたは CPU アクティビティとビデオ表示が含まれます。

ES_CONTINUOUSなしで SetThreadExecutionState を呼び出すと、アイドル タイマーがリセットされます。ディスプレイまたはシステムを動作状態に保つには、スレッドは SetThreadExecutionState を定期的に呼び出す必要があります。

電源管理されたコンピューターで正常に実行するには、FAX サーバー、応答マシン、バックアップ エージェント、ネットワーク管理アプリケーションなどのアプリケーションで、イベントを処理するときに ES_SYSTEM_REQUIREDES_CONTINUOUS の両方を使用する必要があります。 ビデオ プレーヤーやプレゼンテーション アプリケーションなどのマルチメディア アプリケーションでは、ユーザー入力なしで長期間ビデオを表示する場合は、 ES_DISPLAY_REQUIRED を使用する必要があります。 ワード プロセッサ、スプレッドシート、ブラウザー、ゲームなどのアプリケーションでは、 SetThreadExecutionState を呼び出す必要はありません。

ES_AWAYMODE_REQUIRED値は、システムがスリープ状態にあるように見える間に、テレビコンテンツの記録や他のデバイスへのメディアのストリーミングなどのバックグラウンド タスクを実行する必要があるメディア アプリケーションで絶対に必要な場合にのみ使用する必要があります。 重要なバックグラウンド処理を必要としない、またはポータブル コンピューターで実行されるアプリケーションは、システムが真のスリープ状態に入ることで電力を節約できないため、離れたモードを有効にしないでください。

離れたモードを有効にするために、アプリケーションは ES_AWAYMODE_REQUIREDES_CONTINUOUS の両方を使用します。退席モードを無効にするには、アプリケーションは SetThreadExecutionStateES_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

関連項目

Power Management Functions

SetSuspendState

SetSystemPowerState

WM_POWERBROADCAST