gpt4 book ai didi

c++ - INetworkConnectionEvents 支持什么?

转载 作者:行者123 更新时间:2023-11-30 04:04:25 25 4
gpt4 key购买 nike

我正在尝试使用这个 API;但是,我无法触发事件。所以这是使用 Network List 1.0 Type Library com。

这是我的代码:

 public class AvailibleWLan : INetworkListManagerEvents, INetworkEvents, INetworkConnectionEvents
{
public NETWORKLIST.INetworkListManager NewWorkList {get;set;}
public List<WirelessNetwork> Connections { get; set; }
public AvailibleWLan()
{
Connections = new List<WirelessNetwork>();
NewWorkList = new NETWORKLIST.NetworkListManager();
foreach (NETWORKLIST.INetwork Network in NewWorkList.GetNetworks(NETWORKLIST.NLM_ENUM_NETWORK.NLM_ENUM_NETWORK_ALL))
{
String Name = Network.GetName();
var Connectivity = Network.GetConnectivity();
var Description = Network.GetDescription();
}

}
//public event NetworkPropertyChanged NetworkConnectivityChanged;
public WirelessNetwork Network { get; set; }

void INetworkListManagerEvents.ConnectivityChanged(NLM_CONNECTIVITY newConnectivity)
{
throw new NotImplementedException();
}

void INetworkConnectionEvents.NetworkConnectionConnectivityChanged(Guid connectionId, NLM_CONNECTIVITY newConnectivity)
{
throw new NotImplementedException();
}

void INetworkConnectionEvents.NetworkConnectionPropertyChanged(Guid connectionId, NLM_CONNECTION_PROPERTY_CHANGE Flags)
{
throw new NotImplementedException();
}

void INetworkEvents.NetworkAdded(Guid networkId)
{
throw new NotImplementedException();
}

void INetworkEvents.NetworkConnectivityChanged(Guid networkId, NLM_CONNECTIVITY newConnectivity)
{
throw new NotImplementedException();
}

void INetworkEvents.NetworkDeleted(Guid networkId)
{
throw new NotImplementedException();
}

void INetworkEvents.NetworkPropertyChanged(Guid networkId, NLM_NETWORK_PROPERTY_CHANGE Flags)
{
throw new NotImplementedException();
}
}

所以我暂停了所有事件。而且 vs 永远不会爆发。

最佳答案

您定义了所有必要的回调函数,太棒了。但是您必须通过为感兴趣的网络调用网络接口(interface)方法“建议”来注册这些事件。

这是一个代码示例:

namespace NetworkListSample
{
class TestNetworkEvents : INetworkListManagerEvents, INetworkConnectionEvents
{
private INetworkListManager m_nlm = new NetworkListManager();

private static Guid s_INetworkListManagerEventsGuid = typeof(INetworkListManagerEvents).GUID;
private static Guid s_INetworkConnectionEventsGuid = typeof(INetworkConnectionEvents).GUID;

public void RegisterForEvents()
{
// Here it will only register for events of a network which is connected,
// if you wish to register for events of disconnected networks
// use a different NLM_ENUM_NETWORK enum value
IEnumNetworks Networks = m_nlm.GetNetworks(NLM_ENUM_NETWORK.NLM_ENUM_NETWORK_CONNECTED);
foreach (INetwork item in Networks)
{
IConnectionPoint cp = null;
IConnectionPointContainer icpc = (IConnectionPointContainer)m_nlm;
int cookie = -1;

Guid tempGuid = s_INetworkListManagerEventsGuid;
icpc.FindConnectionPoint(ref tempGuid, out cp);
cp.Advise(this, out cookie);
}
}

public void ConnectivityChanged(NLM_CONNECTIVITY newConnectivity)
{
throw new NotImplementedException();
}

public void NetworkConnectionConnectivityChanged(Guid connectionId, NLM_CONNECTIVITY newConnectivity)
{
throw new NotImplementedException();
}

public void NetworkConnectionPropertyChanged(Guid connectionId, NLM_CONNECTION_PROPERTY_CHANGE Flags)
{
throw new NotImplementedException();
}
}
}

请不要忘记以整数 cookie 为参数的“不建议”。

关于c++ - INetworkConnectionEvents 支持什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23739348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com