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

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

下一步是在Windows 10中控制电池节电器。虽然我可以使用GetSystemPowerStatus读取它的状态,但是我找不到以编程方式启用/禁用它的方法。 Windows API中是否有这样的function?

大多数情况下,您可以通过ShellExecuteEx()调用一个名为PowerCfg的系统应用程序来执行Linux方式:

 powercfg /setdcvalueindex SCHEME_CURRENT SUB_ENERGYSAVER ESBATTTHRESHOLD 100 powercfg /setactive scheme_current 

这意味着,即使电池百分比等于100%,节能程序也会启动。 这里描述了 SUB_ENERGYSAVER及其子GUID ESBATTTHRESHOLD

你似乎不走运。 MSDN文档显示没有可以控制电池保护程序的API。 检查SettingsHandlers_OneCore_BatterySaver显示只有GetSetting被暴露。 甚至WMI Win32_Battery中的SetPowerState也没有实现 – 我知道这并不是你所需要的,但是它表明微软并没有暴露出与电池相关的功能。 在这一点上,而不是逆向工程的按钮点击,你最好的选择可能是模拟它像AutoHotKey的东西, 但要小心的陷阱与此 。