2017-08-07 45 views
9

我在寫一個小程序來保存筆記本電腦的電池,現在我可以在使用PowerSetActiveScheme的電源方案之間進行切換。如何在程序中啓用/禁用Windows 10電池保護程序?

下一步是控制Windows 10中的電池節電器。雖然我可以使用GetSystemPowerStatus讀取它的狀態,但我找不到以編程方式啓用/禁用它的方法。 Windows API中是否有這樣的功能?

+0

你是否看過:https://msdn.microsoft.com/de-de/library/windows/desktop/aa373163(v=vs.85).aspx? –

+0

我無法在(英文版)中找到允許將'電池保護程序'切換爲'打開'的文章。 FWIW,看起來你並不孤單,在這個問題上: https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/8b1dbe33-d8fb-4be8-af53-0de13d288136/enabling-battery-saver-energy -saver-in-windows-10-via-win32-api?forum = powermanagement –

+0

它確實需要PowerSetActiveScheme()。但是,當然,你不知道哪個特定的方案是「好的」。修改電源方案是計算機制造商能夠使其機器「特殊」的少數幾種方法之一,儘管每個人都使用完全相同的組件和完全相同的操作系統。那裏有一個更好的項目。 –

回答

2

最可能的是,你可以通過ShellExecuteEx()做Linux的方式,通過調用名爲PowerCfg系統應用:

powercfg /setdcvalueindex SCHEME_CURRENT SUB_ENERGYSAVER ESBATTTHRESHOLD 100 
powercfg /setactive scheme_current 

這意味着,即使電池百分比等於100%的節能被激活。 SUB_ENERGYSAVER及其子GUID ESBATTTHRESHOLDdescribed here

+0

如果啓用了電池保護程序功能,這可以在Windows上使用。我認爲OP想知道如何啓用/禁用該功能。 – jwdonahue

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

那天我花了好幾個小時看着這個。有多種方法來設置閾值和控制功率級別,但沒有公開的方式來啓用/禁用該功能。 – jwdonahue

相關問題