DecaTec

Home-Server | Linux | Nextcloud | Raspberry Pi | Programmierung | Fotografie

Windows-Energieoptionen mit C# auslesen

Will man die Windows-Energieoptionen mit C# auslesen, merkt man schnell, dass es im .NET Framework leider keinerlei Funktionen gibt, die dies direkt ermöglichen. Eine Möglichkeit, dies dennoch unter C# zu bewerkstelligen, führt über das Windows Power Management API.

Die zentrale Funktion zum Auslesen der Energieoptionen ist hierbei GetCurrentPowerPolicies. Diese befindet sich in der powrprof.dll und muss dementsprechend per DllImport eingebunden werden:

Diese Funktion erwartet zwei Structs als Out-Parameter, die im Rahmen der Ausführung der Funktion gefüllt werden: GLOBAL_POWER_POLICY (globale Energieeinstellungen) und POWER_POLICY (Energieoptionen, die den aktuell gewählten Energiesparplan repräsentieren). Diese Stucts enthalten wiederum weiter Stucts und Enums. Die komplette (und ziemlich umfangreiche) Definition sieht dabei folgendermaßen aus:

Hierbei kann man gut sehen, dass die Windows-Energieoptionen viel mehr zu bieten haben, als man über die Windows-Oberfläche einstellen kann.

Im Folgenden wird ein nochmals ein Struct definiert, die die kompletten Energie-Einstellungen zusammenfassen:

Nun können die Windows-Energieoptionen in einer separaten Methode abgefragt werden:

Somit steht eine einfache Möglichkeit zur Verfügung, um die Windows-Energieoptionen unter C# auszulesen.

Schreiben von Windows-Energieeinstellungen

Der Vollständigkeit halber sei hier noch erwähnt, dass es im Windows Power Management API ebenfalls Funktionen existieren, mit denen die Windows-Energieoptionen verändert werden können:

Allerdings rate ich hier zur Vorsicht, da es oftmals keine einfache Möglichkeit gibt, diese Einstellungen zurück zu setzen. Dies liegt wiederum darin begründet, dass viele Optionen nicht über die Oberfläche von Windows eingestellt werden können, wie bereits weiter oben erwähnt.

Download

Hier gibt es die komplette Visual Studio Solution mit Beispiel-Code zum Download:

WindowsPowerOptions.zip

, , , ,

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.