我想知道如何在高性能,节电器和之间获得电源计划更改的事件平衡,我需要它以每个计划的不同模式更改我的应用程序。我在这方面找到了一些解决方案,但没有得到理想的结果。
例如,如果我使用item.CurrentMhz
来注册处理器当前功率值,它可用于不同目的,但此输出不会为我提供电源计划状态public uint Number; MaxMhz; CurrentMhz; MhzLimit; MaxIdleState; CurrentIdleState;
。例如,CurrentIdleState
在Power Saver和High Performance计划上是相同的。无论如何,如果我能以某种方式使用它,主要问题是我不能使它作为事件工作,只作为条件结果。但事实上,它不是电力计划状态,不同处理器的功率值也不同。似乎这个目标并不是获得理想结果的正确方法。
SystemEvents_PowerModeChanged
对于这种情况也没有意义,如果连接或断开电源线,则只接受电源状态更改事件。
与PowerStatus powerStatus = SystemInformation.PowerStatus;
相同,但如果连接或断开电源线,则标识当前电源状态。
所以我不确定,如果有任何有用的解决方案,我怎样才能在电源计划更改之间获得此事件。
答案 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
],
结构重要的值你的申请。