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

Работа с уведомлениями энергопотребления монитора в Delphi XE2: использование `RegisterPowerSettingNotification`

Delphi , Синтаксис , Справочник по API-функциям

Работа с уведомлениями энергопотребления монитора в Delphi XE2

В данной статье мы рассмотрим, как использовать функцию RegisterPowerSettingNotification в среде разработки Delphi XE2 для получения уведомлений об изменении энергетических настроек монитора, в частности, об изменении статуса включения монитора, который идентифицируется GUID GUID_MONITOR_POWER_ON.

Проблема

Разработчики, работающие с Delphi XE2, часто сталкиваются с необходимостью интеграции своих приложений с системными уведомлениями, в том числе и с уведомлениями об изменении энергопотребления. Одной из задач такого рода является использование функции RegisterPowerSettingNotification в связке с GUID_MONITOR_POWER_ON для получения уведомлений о включении монитора.

Решение

Чтобы зарегистрировать приложение для получения уведомлений о настройках энергопотребления, необходимо вызвать функцию RegisterPowerSettingNotification с указанием GUID интересующего события. В случае с монитором, это будет GUID_MONITOR_POWER_ON. Если регистрация больше не требуется, следует вызвать функцию UnregisterPowerSettingNotification.

Пример кода на Object Pascal для Delphi XE2:

unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
const
  GUID_MONITOR_POWER_ON: TGUID = '{02731015-4510-4526-99e6-e5a17ebd1aea}';
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    FHPOWERNOTIFY: THandle;
  protected
    procedure WM_POWERBROADCAST(var Msg: TMessage); message WM_POWERBROADCAST;
  end;
function RegisterPowerSettingNotification(hRecipient: THandle;
  PowerSettingGuid: PGUID; Flags: DWORD): THandle; stdcall;
external 'user32.dll';
function UnregisterPowerSettingNotification(Handle: THandle): BOOL; stdcall;
external 'user32.dll';
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
  FHPOWERNOTIFY := RegisterPowerSettingNotification(Handle,
    @GUID_MONITOR_POWER_ON, DEVICE_NOTIFY_WINDOW_HANDLE);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
  UnregisterPowerSettingNotification(FHPOWERNOTIFY);
end;
procedure TForm1.WM_POWERBROADCAST(var Msg: TMessage);
begin
  if PPOWERBROADCAST_SETTING(Msg.LParam)^.Data[0] = 0 then
    Memo1.Lines.Add('Off')
  else
    Memo1.Lines.Add('ON')
end;
end.

В данном примере при создании формы происходит регистрация приложения для получения уведомлений. При уничтожении формы происходит отмена регистрации. В обработчике сообщения WM_POWERBROADCAST происходит проверка статуса включения монитора и соответствующее обновление интерфейса.

Альтернативный ответ

Если в приложении зарегистрировано несколько уведомлений, важно проверять, какое именно событие привело к генерации сообщения WM_POWERBROADCAST, и если это PBT_POWERSETTINGCHANGE, то также необходимо определить, какое конкретно уведомление энергопотребления вызвало это событие.

Подтвержденный ответ

Для регистрации приложения на получение уведомлений о настройках энергопотребления, следует использовать функцию RegisterPowerSettingNotification с указанием соответствующего GUID. В случае с монитором, это будет GUID_MONITOR_POWER_ON. Для обработки уведомлений необходимо переопределить метод WM_POWERBROADCAST в вашем приложении, как показано в примере кода выше. Не забудьте отменить регистрацию, вызвав UnregisterPowerSettingNotification, когда она больше не требуется.

Заключение

Использование RegisterPowerSettingNotification в Delphi XE2 позволяет разработчикам интегрировать свои приложения с системными уведомлениями об энергопотреблении, что может быть полезно для широкого спектра задач, от управления питанием до оптимизации работы с устройствами ввода-вывода.

Создано по материалам из источника по ссылке.

Статья описывает использование функции `RegisterPowerSettingNotification` в Delphi XE2 для получения уведомлений об изменениях энергетических настроек монитора.


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

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




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


:: Главная :: Справочник по API-функциям ::


реклама


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

Время компиляции файла: 2024-12-22 17:14:06
2025-12-16 14:08:37/0.014970064163208/0