Всем доброго времени суток.
Появилась необходимость програмно переводить бук в спящий режим при работе от БАТАРЕИ и вернуть его к жизни при работе от СЕТИ.
вогнать в спящий режим получилось:
Код:
procedure Tmainform.TslTimer(Sender: TObject);
var
st: TSystemPowerStatus;
s: string;
hToken: THandle;
tkp: TTokenPrivileges;
ReturnLength: Cardinal;
begin
GetSystemPowerStatus(st);
case st.ACLineStatus of
0: s := 'от батареи';
1: s := 'от сети';
else s := 'не известно';
end;
Info.Items.Add('Питание'#9 + s);
if s = 'от батареи' then begin
if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or
TOKEN_QUERY, hToken) then
begin
LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid);
tkp.PrivilegeCount := 1; // one privelege to set
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
if AdjustTokenPrivileges(hToken, False, tkp, 0, nil, ReturnLength) then
SetSystemPowerState(true, true);
end;
end;
end;
а вот с возвращением к "жизни" сложнее люди подскажите как это релизовать...