Регистрация для событий NLM (INetworkListManager, Advise, Sink и т. Д.)
В моем приложении Delphi я хотел бы получать информацию об изменениях в сети с помощью Microsoft Windows Network List Manager API (NLM):http://msdn.microsoft.com/library/ee264321
Я посмотрел на связанный пример «Как зарегистрироваться для событий NLM» и перевел его на Delphi. Тем не менее, я понятия не имею, как продолжить это.
var
pNLM: INetworkListManager;
pCpc: IConnectionPointContainer;
pConnectionPoint: IConnectionPoint;
pSink: IUnknown;
dwCookie: LongInt;
const
IID_IConnectionPointContainer: TGUID = '{B196B284-BAB4-101A-B69C-00AA00341D07}';
IID_IUnknown: TGUID = '{00000000-0000-0000-C000-000000000046}';
begin
if Succeeded(CoCreateInstance(CLASS_NetworkListManager, nil, CLSCTX_ALL, IID_INetworkListManager, pNLM)) then
begin
if Succeeded(pNLM.QueryInterface(IID_IConnectionPointContainer, pCpc)) then
begin
if Succeeded(pCpc.FindConnectionPoint(IID_INetworkEvents, pConnectionPoint)) then
begin
if Succeeded(pCpc.QueryInterface(IID_IUnknown, pSink)) then
begin
pConnectionPoint.Advise(pSink, dwCookie);
end;
end;
end;
end;
end;
В статье говорится:
«После создания объекта INetworkListManager, указанного выше, вы будете получать уведомления INetworkEvents с этой точки вперед. PSink реализует интерфейс INetworkEvent, включая такие методы обработки событий, как NetworkAdded, NetworkDeleted, NetworkConnectivityChanged и NetworkPropertyChanged».
К сожалению, я понятия не имею, как это сделать. Никаких дальнейших инструкций нет, и поэтому я надеюсь, что кто-то здесь сможет проинструктировать меня / предоставить пример того, что еще нужно сделать, чтобы вызвать пользовательские процедуры для этих событий. Благодарю.