1. Do you speak English? Use the English version of the site! Link
    Скрыть объявление
Скрыть объявление
Здравствуй гость! После регистрации на ресурсе, ты сможешь скачивать материалы с форума и участвовать в его жизни! Для регистрации откройте соответствующую форму или нажмите на эту ссылку.

Функция перевода в спящий режим

Тема в разделе "Статьи", создана пользователем X-Vlad, 02.10.2015.

  1. X-Vlad

    X-Vlad Юзер

    Фев 02 2017 в 22:56
    Регистрация:
    21.09.2015
    Сообщения:
    21
    Симпатии:
    25
    Skype:
    ICQ:
    943014
    Сегодня я вам покажу как ваш пк/ноут перевести в спящий режим программно в Delphi.
    Для этого используем функцию:
    Код:
    procedure NTSleep;
    var
      hToken: THandle;
      tkp: TTokenPrivileges;
      ReturnLength: Cardinal;
    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;
    Используем так, например при нажатии на Button:
    Код:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    NTSleep;
    end;
    Кому будет интерестно приведу пример таймера, который при конце отсчета переводит в спящий режим (например смотрите фильм и вы уже устали и можете случайно уснуть, ставите время фильма и запускаете таймер, если вы уснули ранее чем закончился фильм то ваш пк перейдет в спящий режим)