![]() |
|
#1
|
||||
|
||||
![]() Всем доброго времени суток.
Появилась необходимость програмно переводить бук в спящий режим при работе от БАТАРЕИ и вернуть его к жизни при работе от СЕТИ. вогнать в спящий режим получилось: Код:
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; а вот с возвращением к "жизни" сложнее люди подскажите как это релизовать... Delphi XE + Ehlib + FastReport |