如何在程序中启用/禁用Windows 10电池保护程序?

问题描述 投票:10回答:3

我正在写一个小程序来保存笔记本电脑的电池,我现在可以使用PowerSetActiveScheme在电源方案之间切换。

下一步是在Windows 10中控制电池保护程序。虽然我可以使用GetSystemPowerStatus读取它的状态,但我找不到以编程方式启用/禁用它的方法。 Windows API中是否有任何功能可以执行此操作?

c windows winapi
3个回答
2
投票

最有可能你可以通过PowerCfg调用名为ShellExecuteEx()的系统应用程序来实现Linux方式:

powercfg /setdcvalueindex SCHEME_CURRENT SUB_ENERGYSAVER ESBATTTHRESHOLD 100
powercfg /setactive scheme_current

这意味着即使电池百分比等于100%,也会激活节能器。 SUB_ENERGYSAVER及其子GUID ESBATTTHRESHOLDdescribed here


1
投票

你似乎运气不好。 MSDN文档没有显示可以控制电池保护程序的API。检查SettingsHandlers_OneCore_BatterySaver显示仅公开GetSetting。 Even SetPowerState in WMI Win32_Battery is not implemented - 我知道这不是你需要的,但它表明微软还没有公开与电池相关的功能。此时,不要对按钮单击进行逆向工程,最好的办法是用AutoHotKey,however beware of the pitfalls with that等模拟它。


0
投票

@ hidefromkgb的答案非常正确。唯一缺少的部分是禁用节能器并防止它打开,你需要这样做:

powercfg /setdcvalueindex SCHEME_CURRENT SUB_ENERGYSAVER ESBATTTHRESHOLD 0
powercfg /setdcvalueindex SCHEME_CURRENT SUB_ENERGYSAVER ESBRIGHTNESS 100 

如果你这样做,然后回到控制面板Battery Saver部分,你会看到第一个复选框现在被禁用(尽管它仍然显示20%,但它是灰色的,所以应该没问题)。此外,将取消选中第二个复选框(屏幕下方亮度)。

© www.soinside.com 2019 - 2024. All rights reserved.