procedure
TPowerPlansList
.
GetPowerPlans;
const
BufferLength : DWORD =
1024
;
var
chGuid : TGUID;
szGuid : DWORD;
szName : DWORD;
chName :
PChar
;
stName :
String
;
Idx :
Integer
;
Ret :
Integer
;
PowerPlan : TPowerPlan;
iEnum : DWORD;
begin
FItems
.
Clear;
Idx :=
0
;
szGuid := SizeOf(TGUID);
GetMem(chName,BufferLength*SizeOf(
Char
));
Try
iEnum := PowerEnumerate(
0
,
Nil
,
Nil
,ACCESS_SCHEME,Idx,chGuid,szGuid);
While
iEnum =
0
Do
Begin
szName := BufferLength;
ZeroMemory(chName,BufferLength*SizeOf(
Char
));
Ret := PowerReadFriendlyName(
Nil
,@chGuid,
Nil
,
Nil
,PUCHAR(chName),@szName);
if
Ret =
0
Then
stName := StrPas(chName)
Else
If
Not
PowerReadWellKnownFriendlyName(chGuid,stName)
Then
stName :=
'Unknown plan'
;
PowerPlan
.
Index := Idx;
PowerPlan
.
Guid := chGuid;
PowerPlan
.
Name := stName;
FItems
.
Add(PowerPlan);
Inc(Idx);
iEnum := PowerEnumerate(
0
,
Nil
,
Nil
,ACCESS_SCHEME,Idx,chGuid,szGuid);
End
;
Finally
FreeMem(chName,szName*SizeOf(
Char
));
End
;
end
;