Событие изменения плана электропитания - высокая производительность, энергосбережение и сбалансированность
Я пытаюсь выяснить, как получить план "Событие с электропитанием", переключаясь между режимами " Высокая производительность", " Энергосбережение" и " Сбалансированный". Мне нужно, чтобы приложение менялось в разных режимах для каждого плана. Я нашел некоторые решения в этом направлении, но не получил желаемого результата.
Например, если я возьму item.CurrentMhz
, который регистрирует текущее значение мощности процессора, это полезно для разных целей, но этот вывод не дает мне состояние Power Plan public uint Number; MaxMhz; CurrentMhz; MhzLimit; MaxIdleState; CurrentIdleState;
, Например CurrentIdleState
равно по энергосбережению и плану высокой производительности. В любом случае, если я могу каким-то образом использовать его, главная проблема в том, что я не могу заставить его работать как событие, только как условный результат. Но на самом деле это не состояние плана электропитания, а значение мощности для разных процессоров разное. Похоже, что для этой цели это не правильный способ получить желаемый результат.
SystemEvents_PowerModeChanged
также не имеет смысла для этого случая, принимает только событие изменения состояния питания, если шнур подключен или отключен.
То же самое с PowerStatus powerStatus = SystemInformation.PowerStatus;
это то же самое, но с указанием текущего состояния питания, если шнур подключен или отключен.
Поэтому я не уверен, что если есть какое-либо полезное решение, как я могу получить это событие между изменениями планов электропитания.
1 ответ
Есть не только эти три плана. С панели управления вы можете редактировать планы и создавать новые планы. Так что не надейтесь найти трехзначное enum
,
PBT_APMPOWERSTATUSCHANGE
событие указывает на изменения в состоянии питания. Эта страница затем говорит, что читать SYSTEM_POWER_POLICY
структура, которая содержит настройки, контролируемые планами питания.
Таким образом, подход, кажется, заключается в PBT_APMPOWERSTATUSCHANGE
событие, звонок GetSystemPowerStatus
чтобы получить текущее состояние питания в SYSTEM_POWER_POLICY
структурировать, а затем выбрать значения, которые важны для вашего приложения.