Unter Vista heißt das ganze übrigens Energiesparplan.
Nun verwende ich mithilfe der
Jedi-Bibliothek verschiedene Funktionen, um die Daten eines Energiesparplans auszulesen (hier das Wichtigste meines Codes):
Delphi-Quellcode:
USES JwaPowrProf, Dialogs;
VAR uiID : UINT;
ActiveSchemaIndex : LPDWORD;
CurrentPowerPolicy : POWER_POLICY;
Name, Desc : STRING;
BEGIN
IF GetActivePwrScheme(uiID) = True THEN
BEGIN
IF GetNamePowerScheme(uiID, Name, Desc) = True THEN
BEGIN
IF ReadPwrScheme(uiID, CurrentPowerPolicy) = True THEN
BEGIN
ShowMessage('Monitorabschaltung im Batteriebetrieb nach '+IntToStr(CurrentPowerPolicy.user.VideoTimeoutDc DIV 60)+' Minuten');
ShowMessage('Festplattenabschaltung im Batteriebetrieb nach '+IntToStr(CurrentPowerPolicy.user.SpindownTimeoutDc DIV 60)+' Minuten');
ShowMessage('Standby im Batteriebetrieb nach '+IntToStr(CurrentPowerPolicy.user.IdleTimeoutDc DIV 60)+' Minuten');
END;
END;
END;
END;
Das ganze funktioniert unter Windows XP auch fehlerfrei, unter Vista werden aber vollkommen falsche Werte angezeigt. Ich erhalte hier bspw. folgendes:
Bildschirm: nach 5 Minuten abschalten (obwohl 1 Stunde eingestellt ist)
Festplatte: nach 10 Minuten abschalten (obwohl 15 Minuten eingestellt sind)
Standby: nach 5 Minuten aktivieren (obwohl nie eingestellt ist)
Arbeiten die
Jedi-Funktionen wirklich fehlerhaft, oder woran kann das liegen ?
Ich hatte auch mal den Registry-Weg versucht, hier müsste aber der binäre Schlüssel "Policies" in HKEY_CURRENT_USER/Control Panel/PowerCfg/PowerPolicies" ausgewertet werden, und dieser besteht aus 80 hexadezimalen undokumentierten Werten. Von daher dachte ich schon, dass die
Jedi-Funktionen nicht nur unter XP funktionieren.
Wer kann hier helfen ?