在Win7下,打开Control Panel -> Power Options -> Advanced Settings->Processor power management
。我可以获得最小(最大)处理器状态的值
你可以看到最小处理器状态,最大处理器状态。
我想通过C#获取处理器状态的值,例如5%,100%。 我在c#中使用命令“powercfg”,我可以得到“monitor-timeout-ac”的值,依此类推。
我无法获得处理器
状态的值。
我该如何做到这一点?
在Win7下,打开Control Panel -> Power Options -> Advanced Settings->Processor power management
。我可以获得最小(最大)处理器状态的值
你可以看到最小处理器状态,最大处理器状态。
我想通过C#获取处理器状态的值,例如5%,100%。 我在c#中使用命令“powercfg”,我可以得到“monitor-timeout-ac”的值,依此类推。
我无法获得处理器
状态的值。
我该如何做到这一点?
您需要的DllImport powrprof.dll,并使用ReadProcessorPwrScheme API,然后访问processorPolicyInfoAc.DemotePercent和ProcessorPolicyInfoAc.PromotePercent
看到代码波纹管。未经测试,但它会告诉你方式(我使用此代码来获得DynamicThrottle信息,它的工作原理)。
struct PROCESSOR_POWER_POLICY_INFO { public uint TimeCheck; public uint DemoteLimit; public uint PromoteLimit; public byte DemotePercent; public byte PromotePercent; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public byte[] Spare; public uint AllowBits; } struct PROCESSOR_POWER_POLICY { public uint Revision; public byte DynamicThrottle; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] Spare; public uint Reserved; public uint PolicyCount; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public PROCESSOR_POWER_POLICY_INFO[] Policy; } struct MACHINE_PROCESSOR_POWER_POLICY { public uint Revision; // ULONG public PROCESSOR_POWER_POLICY ProcessorPolicyAc; public PROCESSOR_POWER_POLICY ProcessorPolicyDc; } [DllImport("powrprof.dll", SetLastError = true)] static extern bool ReadProcessorPwrScheme(uint uiID, out MACHINE_PROCESSOR_POWER_POLICY pMachineProcessorPowerPolicy); public void ReadProcessorPowerScheme() { MACHINE_PROCESSOR_POWER_POLICY machinep = new MACHINE_PROCESSOR_POWER_POLICY(); uint scheme = 0; if (ReadProcessorPwrScheme(scheme, out machinep)) { //Then loop through machinep.ProcessorPolicyAc.Policy[]; array //Use: PROCESSOR_POWER_POLICY_INFO processorPolicyInfoAc = mppp.ProcessorPolicyAc.Policy[i]; //Use: processorPolicyInfoAc.DemotePercent; //Use: processorPolicyInfoAc.PromotePercent; //And don't forget to do the same for Dc (Dc is battery) } }
埃德加罗沙Carvalho的
使用
PowerReadACValueIndex()/PowerReadDCValueIndex()
NULL
GUID
为期望功率方案(GUID_MAX_POWER_SAVINGS
/GUID_MIN_POWER_SAVINGS
/GUID_TYPICAL_POWER_SAVINGS
)GUID_PROCESSOR_SETTINGS_SUBGROUP
GUID_PROCESSOR_THROTTLE_MAXIMUM
或GUID_PROCESSOR_THROTTLE_MINIMUM
所有GUID
描述可以在WINNT.H
谢谢您的帮助下找到。 –
我已经通过powercfg命令解决了它。 –