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

Использование Windows Network List Manager (NLM) API для получения событий сети в приложениях на Delphi

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

Использование Windows Network List Manager (NLM) API для получения событий сети в приложениях на Delphi

В данной статье мы рассмотрим, как использовать API Windows Network List Manager (NLM) для получения уведомлений о изменениях в сети в приложениях, написанных на Delphi. Мы рассмотрим пример кода, который позволяет регистрировать приложение для получения уведомлений о событиях сети, таких как добавление, удаление сети, изменение подключения и изменение свойств сети.

Подготовка

Прежде чем приступить к написанию кода, убедитесь, что в вашем проекте Delphi импортирована типовая библиотека (Type Library) для NLM. Это можно сделать через меню Component > Import Component > Import a Type Library, выбрав соответствующую библиотеку из файла netprofm.dll, который находится в директории C:\Windows\system32\.

Регистрация для получения уведомлений

После создания объекта INetworkListManager, вам необходимо зарегистрировать объект-подписант (sink), который будет обрабатывать уведомления. Для этого необходимо создать класс, реализующий интерфейс INetworkEvents, и использовать его для регистрации в качестве подписчика событий.

unit NLMEvents;
interface
function StartNLMEventListener: HResult;
function StopNLMEventListener: HResult;
implementation
uses
  Windows, ActiveX, NETWORKLIST_TLB, SysUtils, Unit1;
type
  TMyNetworkEvents = class(TInterfacedObject, INetworkEvents, INetworkConnectionEvents, INetworkListManagerEvents)
  public
    function NetworkAdded(networkId: TGUID): HResult; stdcall;
    function NetworkConnectivityChanged(networkId: TGUID; NewConnectivity: NLM_CONNECTIVITY): HResult; stdcall;
    function NetworkDeleted(networkId: TGUID): HResult; stdcall;
    function NetworkPropertyChanged(networkId: TGUID; fFlags: NLM_NETWORK_PROPERTY_CHANGE): HResult; stdcall;
    // ... другие методы ...
  end;
var
  pNLM: INetworkListManager = nil;
  dwCookie1, dwCookie2, dwCookie3: LongInt = -1;
  // ... другие переменные ...
function StartNLMEventListener: HResult;
var
  pCpc: IConnectionPointContainer;
  pConnectionPoint: IConnectionPoint;
  pSink: INetworkEvents;
begin
  // ... код для создания и регистрации объекта-подписчика ...
end;
function StopNLMEventListener: HResult;
begin
  // ... код для отмены регистрации объекта-подписчика ...
end;
end.

Обработка событий

В классе TMyNetworkEvents необходимо реализовать методы обработки событий, которые будут вызваны при наступлении соответствующих событий сети.

function TMyNetworkEvents.NetworkAdded(networkId: TGUID): HResult; stdcall;
begin
  // Обработка добавления сети
  Result := S_OK;
end;

Регистрация и отмена регистрации событий

Для регистрации вашего класса в качестве подписчика событий, необходимо использовать методы FindConnectionPoint и Advise. Для отмены подписки — Unadvise.

function StartNLMEventListener: HResult;
begin
  // ... код для регистрации подписки ...
end;

function StopNLMEventListener: HResult;
begin
  // ... код для отмены регистрации подписки и освобождения объекта pNLM ...
end;

Ошибки в практике

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

Заключение

Используя описанный подход, вы сможете успешно получать уведомления о событиях сети в вашем приложении на Delphi. Помните о важности корректной реализации методов обработки событий и управлении объектами COM, чтобы избежать утечек памяти и потери уведомлений.


Обратите внимание, что примеры кода являются упрощенными и не включают полную реализацию всех методов и обработку ошибок, что необходимо в реальных приложениях.

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

Описание контекста: Использование Windows Network List Manager (NLM) API для интеграции уведомлений о событиях сети в приложения, разработанные с использованием Delphi.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2024-12-26 14:21:26/0.0033128261566162/0