Показать сообщение отдельно
  #1  
Старый 29.06.2012, 18:20
Аватар для Dead_Gigabit
Dead_Gigabit Dead_Gigabit вне форума
Начинающий
 
Регистрация: 20.10.2009
Адрес: Там где холодно и сыро.... брр
Сообщения: 135
Версия Delphi: Delphi XE
Репутация: 10
По умолчанию Ждущий режим

Всем доброго времени суток.
Появилась необходимость програмно переводить бук в спящий режим при работе от БАТАРЕИ и вернуть его к жизни при работе от СЕТИ.

вогнать в спящий режим получилось:

Код:
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
Ответить с цитированием