Registre-se para eventos NLM (INetworkListManager, Advise, Sink, etc.)
No meu aplicativo Delphi, gostaria de ser informado sobre alterações de rede usando a API do NLM (Microsoft Network List Manager):http://msdn.microsoft.com/library/ee264321
Eu olhei para o exemplo vinculado "Como se registrar para eventos NLM" e o traduzi para o Delphi. No entanto, não tenho ideia de como continuar com isso.
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;
O artigo diz:
"Depois de criar o objeto INetworkListManager acima, você receberá notificações do INetworkEvents a partir desse ponto. O pSink implementa a interface INetworkEvent, incluindo os métodos de processamento de eventos como NetworkAdded, NetworkDeleted, NetworkConnectivityChanged e NetworkPropertyChanged."
Infelizmente não tenho ideia de como fazer isso. Não há mais instruções e, portanto, espero que alguém aqui possa me instruir / fornecer um exemplo do que mais fazer para chamar procedimentos personalizados para esses eventos. Obrigado.