2

この簡単な方法を使用して、ネットワークの接続/切断イベントを検出しています。

NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged);
NetworkChange.NetworkAvailabilityChanged += new NetworkAvailabilityChangedEventHandler(NetworkChange_NetworkAvailabilityChanged);

...

static void NetworkChange_NetworkAvailabilityChanged(object sender, NetworkAvailabilityEventArgs e)
{
    RaiseNewtorkChange();
}

static void NetworkChange_NetworkAddressChanged(object sender, EventArgs e)
{
    RaiseNewtorkChange();
}

static void RaiseNewtorkChange()
{
    ...
}

問題は、NetworkAddressChangedイベントが数回発生した後、イベントが機能しなくなることがあるということです。なぜこれが起こるのか誰にも分かりますか?

または、C# または C/C++ を使用して、ネットワークの接続/切断イベントを処理する別の方法があります。Windows API や WMI にそのような機能があるのではないでしょうか? ポーリングなしで、LAN/WiFi ネットワークの接続/切断に関する通知が必要です。

4

1 に答える 1

1

Native Wifi APIを使用する必要があるようです。

関数WlanRegisterNotification、特にこの通知を見てください。

WLAN_NOTIFICATION_SOURCE_ACM:
自動構成モジュールによって生成された通知を登録します。
Windows XP with SP3 および Windows XP with SP2 のワイヤレス LAN API: wlan_notification_acm_connection_complete および wlan_notification_acm_disconnected 通知のみが利用可能です。

免責事項: 過去に Native Wifi API を使用したことがありますが、この特定の機能を使用したことはありません。

于 2013-11-12T21:40:06.897 に答える