某友人が、Windowsの電源設定の一覧を取得できればいいなー、と言っていたので作ってみた。
PowrProf.lib のリンクも忘れずに。
// power_to_csv.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 // #include "stdafx.h" void PrintPowerPolicy(const POWER_POLICY &pp); // POWER_POLICY 構造体の出力 int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_ALL,"japanese"); // for wprintf() BOOL result = TRUE; int i = 0; while(result != FALSE) { POWER_POLICY pp; memset( &pp, 0, sizeof(pp) ); wprintf(L"----------INDEX %02d---------\n",i++); result = ReadPwrScheme( i, &pp ); PrintPowerPolicy( pp ); } return 0; } const wchar_t * PowerStateToString(SYSTEM_POWER_STATE sps) { switch(sps) { case 0: return L"PowerSystemUnspecified"; case 1: return L"PowerSystemWorking"; case 2: return L"PowerSystemSleeping1"; case 3: return L"PowerSystemSleeping2"; case 4: return L"PowerSystemSleeping3"; case 5: return L"PowerSystemHibernate"; case 6: return L"PowerSystemShutdown"; case 7: return L"PowerSystemMaximum"; default: return L"Unknown"; } } const wchar_t * PowerActionToString(POWER_ACTION pa) { switch(pa) { case 0: return L"PowerActionNone"; case 1: return L"PowerActionReserved"; case 2: return L"PowerActionSleep"; case 3: return L"PowerActionHibernate"; case 4: return L"PowerActionShutdown"; case 5: return L"PowerActionShutdownReset"; case 6: return L"PowerActionShutdownOff"; case 7: return L"PowerActionWarmEject"; default: return L"Unknown"; } } const wchar_t * BoolToString(BOOL b) { switch(b) { case 0: return L"FALSE"; default: return L"TRUE"; } } void PrintPowerPolicy(const POWER_POLICY &pp) { wprintf(L"----------MACHINE Setting---------\n"); wprintf(L"MinSleepAc = %s\n",PowerStateToString(pp.mach.MinSleepAc)); wprintf(L"MinSleepDc = %s\n",PowerStateToString(pp.mach.MinSleepDc)); wprintf(L"MinSleepAc = %s\n",PowerStateToString(pp.mach.ReducedLatencySleepAc)); wprintf(L"MinSleepAc = %s\n",PowerStateToString(pp.mach.ReducedLatencySleepDc)); wprintf(L"DozeTimeoutAc = %d\n",pp.mach.DozeTimeoutAc); wprintf(L"DozeTimeoutDc = %d\n",pp.mach.DozeTimeoutDc); wprintf(L"DozeS4TimeoutAc = %d\n",pp.mach.DozeS4TimeoutAc); wprintf(L"DozeS4TimeoutDc = %d\n",pp.mach.DozeS4TimeoutDc); wprintf(L"DozeTimeoutAc = %d\n",pp.mach.DozeTimeoutAc); wprintf(L"MinThrottleAc = %d\n",pp.mach.MinThrottleAc); wprintf(L"MinThrottleDc = %d\n",pp.mach.MinThrottleDc); // wprintf(L"pad1 = %d\n",pp.mach.MinThrottleAc); wprintf(L"OverThrottledAc = %d\n",pp.mach.OverThrottledAc); wprintf(L"OverThrottledDc = %d\n",pp.mach.OverThrottledDc); wprintf(L"----------User Setting---------\n"); wprintf(L"IdleAc.Action = %s\n",PowerActionToString(pp.user.IdleAc.Action)); wprintf(L"IdleAc.EventCode = %x\n",pp.user.IdleAc.EventCode); wprintf(L"IdleAc.Flags = %x\n",pp.user.IdleAc.Flags); wprintf(L"IdleDc.Action = %s\n",PowerActionToString(pp.user.IdleDc.Action)); wprintf(L"IdleDc.EventCode = %x\n",pp.user.IdleDc.EventCode); wprintf(L"IdleDc.Flags = %x\n",pp.user.IdleDc.Flags); wprintf(L"IdleTimeoutAc = %d\n",pp.user.IdleTimeoutAc); wprintf(L"IdleTimeoutDc = %d\n",pp.user.IdleTimeoutDc); wprintf(L"IdleSensitivityAc = %d\n",pp.user.IdleSensitivityAc); wprintf(L"IdleSensitivityDc = %d\n",pp.user.IdleSensitivityDc); wprintf(L"ThrottlePolicyAc = %d\n",pp.user.ThrottlePolicyAc); wprintf(L"ThrottlePolicyDc = %d\n",pp.user.ThrottlePolicyDc); wprintf(L"MaxSleepAc = %d\n",PowerStateToString(pp.user.MaxSleepAc)); wprintf(L"MaxSleepDc = %d\n",PowerStateToString(pp.user.MaxSleepDc)); wprintf(L"VideoTimeoutAc = %d\n",pp.user.VideoTimeoutAc); wprintf(L"VideoTimeoutDc = %d\n",pp.user.VideoTimeoutDc); wprintf(L"SpindownTimeoutAc = %d\n",pp.user.SpindownTimeoutAc); wprintf(L"SpindownTimeoutDc = %d\n",pp.user.SpindownTimeoutDc); wprintf(L"OptimizeForPowerAc = %s\n",BoolToString(pp.user.OptimizeForPowerAc)); wprintf(L"OptimizeForPowerDc = %s\n",BoolToString(pp.user.OptimizeForPowerDc)); wprintf(L"FanThrottleToleranceAc = %d\n",pp.user.FanThrottleToleranceAc); wprintf(L"FanThrottleToleranceDc = %d\n",pp.user.FanThrottleToleranceDc); wprintf(L"ForcedThrottleAc = %d\n",pp.user.ForcedThrottleAc); wprintf(L"ForcedThrottleDc = %d\n",pp.user.ForcedThrottleDc); }