Title: determine whether the computer supports hibernation, the sleep states?
//**********************************************************************
// Check if hibernation is allowed
//*********************************************************************
function HibernateAllowed: Boolean;
type
TIsPwrHibernateAllowed = function: Boolean;
stdcall;
var
hPowrprof: HMODULE;
IsPwrHibernateAllowed: TIsPwrHibernateAllowed;
begin
Result := False;
if IsNT4Or95 then Exit;
hPowrprof := LoadLibrary('powrprof.dll');
if hPowrprof 0 then
begin
try
@IsPwrHibernateAllowed := GetProcAddress(hPowrprof, 'IsPwrHibernateAllowed');
if @IsPwrHibernateAllowed nil then
begin
Result := IsPwrHibernateAllowed;
end;
finally
FreeLibrary(hPowrprof);
end;
end;
end;
//**********************************************************************
// Check if suspend is allowed
//**********************************************************************
function SuspendAllowed: Boolean;
type
TIsPwrSuspendAllowed = function: Boolean;
stdcall;
var
hPowrprof: HMODULE;
IsPwrSuspendAllowed: TIsPwrSuspendAllowed;
begin
Result := False;
hPowrprof := LoadLibrary('powrprof.dll');
if hPowrprof 0 then
begin
try
@IsPwrSuspendAllowed := GetProcAddress(hPowrprof, 'IsPwrSuspendAllowed');
if @IsPwrSuspendAllowed nil then
begin
Result := IsPwrSuspendAllowed;
end;
finally
FreeLibrary(hPowrprof);
end;
end;
end;