2017-08-07 52 views
9

Piszę mały program, aby zapisać baterię mojego laptopa, i mogę teraz przełączać się między schematami zasilania za pomocą PowerSetActiveScheme.Jak włączyć/wyłączyć oszczędzanie baterii systemu Windows 10 w programie?

Następnym krokiem jest kontrolowanie oszczędzania baterii w Windows 10. Chociaż mogę odczytać jego stan za pomocą GetSystemPowerStatus, nie mogę znaleźć sposobu, aby włączyć/wyłączyć go programowo. Czy są jakieś funkcje w Windows API, aby to zrobić?

+0

przejrzałeś: https://msdn.microsoft.com/de-de/library/windows/desktop/aa373163(v=vs.85).aspx? –

+0

Nie mogę znaleźć niczego w wersji (angielskiej), która pozwoliłaby na przełączenie "oszczędzania baterii" na "włączone". FWIW, wygląda na to, że nie jesteś sam w tym pytaniu: https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/8b1dbe33-d8fb-4be8-af53-0de13d288136/enabling-battery-saver-energy -sver-in-windows-10-via-win32-api? forum = powermanagement –

+0

Wymaga PowerSetActiveScheme(). Ale na pewno nie masz pojęcia, który konkretny schemat jest "dobry". Majstrowanie przy schematach zasilania jest jednym z niewielu sposobów, w jaki producent komputerów może uczynić swoją maszynę "specjalną", mimo że każdy używa dokładnie tych samych komponentów i dokładnie tego samego systemu operacyjnego. Tam jest lepszy projekt. –

Odpowiedz

2

Prawdopodobnie można to zrobić Linux-drożny, nazywając aplikację systemową o nazwie PowerCfg przez ShellExecuteEx():

powercfg /setdcvalueindex SCHEME_CURRENT SUB_ENERGYSAVER ESBATTTHRESHOLD 100 
powercfg /setactive scheme_current 

Oznacza to, że oszczędzania energii jest włączony, nawet gdy bateria procentowa jest równa 100%. SUB_ENERGYSAVER i podgrup identyfikator_GUID ESBATTTHRESHOLDdescribed here.

+0

To działałoby w systemie Windows, jeśli funkcja oszczędzania baterii jest włączona. Myślę, że OP chce wiedzieć, jak włączyć/wyłączyć tę funkcję. – jwdonahue

1

Wygląda na to, że nie masz szczęścia. W dokumentach MSDN nie ma interfejsu API, za pomocą którego można kontrolować oszczędzanie baterii. Analizowanie SettingsHandlers_OneCore_BatterySaver pokazuje, że tylko GetSetting jest narażony. Even SetPowerState in WMI Win32_Battery is not implemented - Wiem, że nie jest to dokładnie to, czego potrzebujesz, ale pokazuje, że Microsoft nie pozbył się funkcji związanych z baterią. W tym momencie, zamiast inżynierii wstecznej, kliknij przycisk, najlepszym wyjściem jest prawdopodobnie naśladowanie go za pomocą czegoś takiego jak AutoHotKey, however beware of the pitfalls with that.

+0

Spędziłem kilka godzin patrząc na to innego dnia. Istnieje więcej niż jeden sposób ustawiania progów i kontrolowania poziomów mocy, ale brak opublikowanych środków do włączania/wyłączania tej funkcji. – jwdonahue