class Tester {
public static void Main() {
Tester we = new Tester();
ManagementScope scope = new ManagementScope("root\\wmi");
ManagementEventWatcher w = null;
try {
WqlEventQuery q = new WqlEventQuery();
q.EventClassName = "__InstanceOperationEvent";
q.WithinInterval = new TimeSpan(0,0,3);
q.Condition = @"TargetInstance ISA 'MSNdis_MediaConnectStatus' ";
w = new ManagementEventWatcher( q);
w.EventArrived += new EventArrivedEventHandler(we.NetwEventArrived);
w.Start();
Console.ReadLine(); // block main thread for test purposes
}
catch(Exception e) {
Console.WriteLine(e.Message);
}
finally {
w.Stop();
w.Dispose();
}
}
public void NetwEventArrived(object sender, EventArrivedEventArgs e) {
//Get the Event object and show it
ManagementBaseObject prop =
e.NewEvent.Properties["PreviousInstance"].Value as ManagementBaseObject;
Console.WriteLine(Convert.ToBoolean(prop.Properties["NdisMediaConnectStatus"].Value)?"Connected":"Disonnected");
}