2016-01-17 31 views
6

Qtとビジュアルスタジオ2015でC++でアプリケーションを開発しました。私のC++アプリケーションの実行中にウィンドウがスリープ状態にならないようにするには?

私のアプリケーションの実行中にアプリケーションフォームがスリープ状態にならないようにする方法を知りたいと思います。私のアプリケーションは常にバックグラウンドで実行され、ユーザが音声で指示するように応答する必要があります。

アプリケーションの実行中にウィンドウがスリープ状態にならないようにする方法はありますか?

+1

質問する前にこれを確認しました。私は自分が望むものが見つからなかった。 – ProEns08

+1

あなたの質問にどのように答えられないのですか? –

+0

私のコードに 'SetThreadExecutionState'関数を呼び出す場所がわかりません。 main()関数の開始時または無限の処理ループでは? – ProEns08

答えて

6

SetThreadExecutionState機能

ことにより睡眠を入力するか、アプリケーションの実行中に表示をオフから防止システム、それが使用されているシステムに通知するアプリケーションを有効にします。

ここAPIについて詳しく読む:SetThreadExecutionState

例:

// The following sets the appropriate flags to prevent system to go into sleep mode. 
SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_AWAYMODE_REQUIRED); 

// This clears the flags and allows the system to sleep normally. 
SetThreadExecutionState(ES_CONTINUOUS); 
+0

私のコード、main()または無限の処理ループで、この関数の呼び出しをどこに置くべきかわかりませんか? – ProEns08

+1

関数が繰り返し呼び出されるプログラム内の任意の場所は、ウィンドウがスリープ状態になる間隔よりも短い間隔で機能するはずです。 また、SetThreadExecutionStateを呼び出し、45秒待ってループを開始し、アプリケーションが終了するまでループを開始して(SetThread〜関数を再度呼び出す)無限ループである関数を1回呼び出すこともできます。 –

+0

@AlexHall:情報ありがとう、これは私が欲しいものです。 – ProEns08

5

マーティン・ボナーが推奨するAPI SetThreadExecutionStateとddacotの文書には、それはかなり明確に説明しました。

あなたの説明によれば、main()に次の関数を入れるべきです。

SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_AWAYMODE_REQUIRED); 

文書によれば、

  • ES_CONTINUOUS次ES_CONTINUOUSを使用して通話やその他の状態フラグの1つがクリアされるまでの状態であるセットが有効なままでなければならないシステムに通知します。

  • ES_SYSTEM_REQUIREDは、システムアイドルタイマーをリセットすることにより、システムを強制的に動作状態にします。

  • ES_AWAYMODE_REQUIREDはメディアアプリケーションをバックグラウンドで実行させるため、アプリケーションを音声で呼び出すことができます。

関連する問題