Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Перевод системы в режим ожидания или спячки

Delphi , ОС и Железо , Компьютер

Перевод системы в режим ожидания или спячки

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  The SetSuspendState function suspends the system by shutting power down. 
  Depending on the Hibernate parameter, 
  the system either enters a suspend (sleep) state or hibernation. 

  Syntax: 
}

  function SetSuspendState(
    Hibernate: Boolean,
    ForceCritical: Boolean,
    DisableWakeEvent: Boolean);


 {  Parameters: 

   Hibernate: If this parameter is TRUE, the system hibernates. 
              If the parameter is FALSE, the system is suspended. 
   ForceCritical: If this parameter is TRUE, the system suspends operation immediately; 
                  if it is FALSE, the system broadcasts a PBT_APMQUERYSUSPEND event to 
                  each application to request permission to suspend operation. 
   DisableWakeEvent: If this parameter is TRUE, the system disables all wake events. 
                     If the parameter is FALSE, any system wake events remain enabled. 


  Windows NT/2000/XP: Included in Windows 2000 and later. 
  Windows 95/98/Me: Included in Windows 98 and later. 
}

 var
   _SetSuspendState: function (Hibernate, ForceCritical, DisableWakeEvent: BOOL): BOOL
   stdcall = nil;

   function LinkAPI(const module, functionname: string): Pointer; forward;

 function SetSuspendState(Hibernate, ForceCritical,
   DisableWakeEvent: Boolean): Boolean;
 begin
   if not Assigned(_SetSuspendState) then
     @_SetSuspendState := LinkAPI('POWRPROF.dll', 'SetSuspendState');
   if Assigned(_SetSuspendState) then
     Result := _SetSuspendState(Hibernate, ForceCritical,
       DisableWakeEvent)
   else
     Result := False;
 end;

 function LinkAPI(const module, functionname: string): Pointer;
 var
   hLib: HMODULE;
 begin
   hLib := GetModulehandle(PChar(module));
   if hLib = 0 then
     hLib := LoadLibrary(PChar(module));
   if hLib <> 0 then
     Result := getProcAddress(hLib, PChar(functionname))
   else
     Result := nil;
 end;

 // Example Call: 
// Beispielaufruf: 

procedure TForm1.Button1Click(Sender: TObject);
 begin
   SetSuspendState(True, False, False);
 end;

Код на Delphi, устанавливающий систему в режим приостановки или спячки с помощью функции SetSuspendState

Описание кода Функция SetSuspendState принимает три параметра: 1. Hibernate: булевое значение, указывающее, нужно ли системе спать (TRUE) или приостанавливаться (FALSE). 2. ForceCritical: булевое значение, указывающее, нужно ли системе приостановиться немедленно (TRUE) или запросить разрешение у приложений сначала (FALSE). 3. DisableWakeEvent: булевое значение, указывающее, нужно ли отключать все события пробуждения (TRUE) или оставлять их включенными (FALSE).

Функция реализована в DLL (POWRPROF.DLL) и может быть загружена с помощью функции LinkAPI, которая загружает библиотеку и получает адрес функции SetSuspendState.

В примере кода при нажатии кнопки вызывается функция SetSuspendState с параметрами Hibernate=True, ForceCritical=False и DisableWakeEvent=False. Это приведет к переходу системы в режим спячки.

Ключевые точки

  • Функция SetSuspendState используется для приостановки или спячки системы.
  • Функция LinkAPI загружает DLL и получает адрес функции внутри нее.
  • Пример кода использует функцию SetSuspendState для перехода системы в режим спячки при нажатии кнопки.

Альтернативное решение Вместо использования библиотеки POWRPROF.DLL можно использовать функции Windows API SetSuspendState и PowerSetActiveScheme для достижения аналогичных результатов. Например:

uses
  Windows;

procedure TForm1.Button1Click(Sender: TObject);
begin
  PowerSetActiveScheme(POWERSHELL_SHELL_APP, SuspendOrHibernate);
end;

Код использует функцию PowerSetActiveScheme для перехода системы в режим приостановки или спячки. Обратите внимание, что это подход требует библиотеки Windows API (Windows.pas) и константы POWERSHELL_SHELL_APP, определенной в ней.

Перевод системы в режим ожидания или спячки, используя функцию SetSuspendState, которая может быть использована для перевода системы в состояние ожидания (сleep) или спячку (hibernation), в зависимости от параметра Hibernate.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Компьютер ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:43:32/0.0056681632995605/1