1

我正在尝试弄清楚,如何在High PerformancePower SaverBalanced之间更改电源计划事件,我需要它来为每个计划更改我的应用程序的不同模式。我在这个方向上找到了一些解决方案,但没有得到想要的结果。

例如,如果我采用item.CurrentMhz记录处理器当前功率值的 ,它对于不同的目的很有用,但是这个输出并没有给我 Power Plan state public uint Number; MaxMhz; CurrentMhz; MhzLimit; MaxIdleState; CurrentIdleState;。例如CurrentIdleState,Power Saver 和 High Performance 计划是相等的。无论如何,如果我能以某种方式使用它,主要问题是我不能让它作为事件工作,只能作为条件结果。但实际上它不是电源计划状态,不同处理器的功率值不同。似乎对于这个目标来说,这不是获得预期结果的正确方法。

SystemEvents_PowerModeChanged对于这种情况也没有意义,如果电源线连接或断开,则仅发生电源状态更改事件。

PowerStatus powerStatus = SystemInformation.PowerStatus;哪个相同,但如果电源线连接或断开,则标识当前电源状态。

所以我不确定,如果有任何有用的解决方案,我怎样才能在电源计划更改之间获得这个事件。

4

1 回答 1

1

不仅仅是这三个计划。您可以从控制面板编辑计划并创建新计划。所以不要指望找到一个三值enum

PBT_APMPOWERSTATUSCHANGE事件指示电源状态的变化。然后该页面说要读取SYSTEM_POWER_POLICY包含由电源计划控制的设置的结构。

因此,该方法似乎是处理PBT_APMPOWERSTATUSCHANGE事件,调用GetSystemPowerStatus以获取SYSTEM_POWER_POLICY结构中的当前电源状态,然后挑选出对您的应用程序很重要的值。

于 2016-10-30T09:58:15.760 回答