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