Событие изменения плана электропитания - высокая производительность, энергосбережение и сбалансированность

Я пытаюсь выяснить, как получить план "Событие с электропитанием", переключаясь между режимами " Высокая производительность", " Энергосбережение" и " Сбалансированный". Мне нужно, чтобы приложение менялось в разных режимах для каждого плана. Я нашел некоторые решения в этом направлении, но не получил желаемого результата.

Например, если я возьму 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 структурировать, а затем выбрать значения, которые важны для вашего приложения.

Другие вопросы по тегам