braintag

公開してしまう備忘録

Windowsが、スリープする設定かどうかのチェック

日本語だとあまりいい情報がなかったのでメモ

常時起動していなければならないアプリ作成中だけど、スリープや休止状態になってしまうと動作しない。

下記のやり方でスリープや休止状態の設定を参照可能。

Windows2000,XP,Vista,7で使用可能

(VisualStudio2008 C++)
・PowrProf.libをリンクに追加すること

/**
*Windowsの設定が、スリープしてしまうかどうかのチェックコード*/
#include <powrprof.h>
//main省略
bool SleepChecker(){
	GLOBAL_POWER_POLICY gPp;
	POWER_POLICY pPp;
	GetCurrentPowerPolicies (&gPp,&pPp);
	if(pPp.user.IdleTimeoutAc != 0 || pPp.mach.DozeS4TimeoutAc != 0){
		return false;
	}
	return true;
}

pPp.user.IdleTimeoutAcとpPp.mach.DozeS4TimeoutAcは、
これだけ経過(秒単位)するとSleepもしくは休止状態になるという値が入っていて、0だとスリープもしくは休止状態しないという
ことになる。


ココら周辺のAPIで設定変更もできるけど、ユーザの同意なく勝手に変更していいのかどうか迷ったので、手動設定を促すほうが無難かなと思う。