使用WMI(Windows Management Instrumentation)提供的 MSNdis_StatusMediaConnect和MSNdis_StatusMediaDisconnect对象,以事件方式通知网络连接或断开
using System;
using System.Management;
namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
// 监视网络连接断开
ManagementEventWatcher disconnectWatcher = new ManagementEventWatcher(
@"root\wmi",
"SELECT * FROM MSNdis_StatusMediaDisconnect");
disconnectWatcher.EventArrived += DisconnectWatcher_EventArrived;
// 启动监视
disconnectWatcher.Start();
// 监视网络连接建立
ManagementEventWatcher connectWatcher = new ManagementEventWatcher(
@"root\wmi",
"SELECT * FROM MSNdis_StatusMediaConnect");
connectWatcher.EventArrived += ConnectWatcher_EventArrived;
// 启动监视
connectWatcher.Start();
Console.ReadLine();
// 停止监视
connectWatcher.Stop();
disconnectWatcher.Stop();
}
private static void ConnectWatcher_EventArrived(object sender,
EventArrivedEventArgs e)
{
string description = (string)e.NewEvent.GetPropertyValue("InstanceName");
Console.WriteLine($"网络已连接:{description}");
}
private static void DisconnectWatcher_EventArrived(object sender,
EventArrivedEventArgs e)
{
string description = (string)e.NewEvent.GetPropertyValue("InstanceName");
Console.WriteLine($"网络已断开:{description}");
}
}
}
注意!在事件处理程序中用e.NewEvent.GetPropertyValue("InstanceName")获得的字符与NetworkInterface.Description相同