我正在写一个小程序来保存笔记本电脑的电池,我现在可以使用PowerSetActiveScheme
在电源方案之间切换。
下一步是在Windows 10中控制电池保护程序。虽然我可以使用GetSystemPowerStatus
读取它的状态,但我找不到以编程方式启用/禁用它的方法。 Windows API中是否有任何功能可以执行此操作?
最有可能你可以通过PowerCfg
调用名为ShellExecuteEx()
的系统应用程序来实现Linux方式:
powercfg /setdcvalueindex SCHEME_CURRENT SUB_ENERGYSAVER ESBATTTHRESHOLD 100
powercfg /setactive scheme_current
这意味着即使电池百分比等于100%,也会激活节能器。 SUB_ENERGYSAVER
及其子GUID ESBATTTHRESHOLD
是described here。
你似乎运气不好。 MSDN文档没有显示可以控制电池保护程序的API。检查SettingsHandlers_OneCore_BatterySaver显示仅公开GetSetting。 Even SetPowerState in WMI Win32_Battery is not implemented - 我知道这不是你需要的,但它表明微软还没有公开与电池相关的功能。此时,不要对按钮单击进行逆向工程,最好的办法是用AutoHotKey,however beware of the pitfalls with that等模拟它。
@ hidefromkgb的答案非常正确。唯一缺少的部分是禁用节能器并防止它打开,你需要这样做:
powercfg /setdcvalueindex SCHEME_CURRENT SUB_ENERGYSAVER ESBATTTHRESHOLD 0
powercfg /setdcvalueindex SCHEME_CURRENT SUB_ENERGYSAVER ESBRIGHTNESS 100
如果你这样做,然后回到控制面板Battery Saver部分,你会看到第一个复选框现在被禁用(尽管它仍然显示20%,但它是灰色的,所以应该没问题)。此外,将取消选中第二个复选框(屏幕下方亮度)。