高性能,省电和平衡的电力计划改变事件

时间:2016-10-26 14:43:31

标签: c# event-handling systemevent power-state

我想知道如何在高性能节电器之间获得电源计划更改的事件平衡,我需要它以每个计划的不同模式更改我的应用程序。我在这方面找到了一些解决方案,但没有得到理想的结果。

例如,如果我使用item.CurrentMhz来注册处理器当前功率值,它可用于不同目的,但此输出不会为我提供电源计划状态public uint Number; MaxMhz; CurrentMhz; MhzLimit; MaxIdleState; CurrentIdleState;。例如,CurrentIdleState在Power Saver和High Performance计划上是相同的。无论如何,如果我能以某种方式使用它,主要问题是我不能使它作为事件工作,只作为条件结果。但事实上,它不是电力计划状态,不同处理器的功率值也不同。似乎这个目标并不是获得理想结果的正确方法。

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

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

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

1 个答案:

答案 0 :(得分:1)

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

PBT_APMPOWERSTATUSCHANGE事件表示电源状态发生变化。然后该页面说明了SYSTEM_POWER_POLICY结构,其中包含由电源计划控制的设置。

因此,方法似乎是处理PBT_APMPOWERSTATUSCHANGE事件,调用GetSystemPowerStatus以获取SYSTEM_POWER_POLICY结构中的当前电源状态,然后选择对于[ 'attribute'=>' category', 'value'=>function($model){ switch ($model->category){ case 1:{ return "Normal truck"; } case 2:{ return "Bulker truck"; } } }, 'filter'=>array(1=>"Normal truck",2=>"Bulker truck"), //the dropdown filter ], 结构重要的值你的申请。