2017-08-22 7 views
1

J'ai installé le créateur de code WMI sur mon ordinateur que j'ai installé de here.Détection d'un câble Ethernet dans WMI?

Je me demande ce que namespace et classes (dynamiques ou statiques) dois-je choisir de l'application créateur de code WMI comme indiqué ci-dessous dans une image afin d'obtenir un rappel dans WMI lorsqu'un câble Ethernet est connecté à ordinateur.

  • Il faut dire quelque chose comme « câble Ethernet connecté » lorsqu'il est connecté à l'ordinateur et,

  • Il faut dire quelque chose comme « câble Ethernet débranché » lorsqu'il est déconnecté avec l'ordinateur

Après avoir sélectionné un espace de noms et une classe, j'utiliserai le code C# du créateur du code et l'exécuterai sur mon ordinateur pour détecter les changements de réseau sur l'ordinateur.

enter image description here

+0

Je vote pour fermer cette question hors sujet parce que vous ne semblez pas intéressé à développer votre propre programme, tout enregistrement une macro avec des outils existants. Les questions sur l'utilisation des applications ordinaires appartiennent à Super User. –

+0

@BenVoigt Je suis un débutant dans WMI et C# donc j'ai moins de connaissances en la matière. Un petit pointeur me donnera une idée pour développer mon propre programme. –

Répondre

1

Quelque chose comme cela devrait vous aider à démarrer:

var q = new WqlEventQuery("SELECT * FROM __InstanceModificationEvent WITHIN 10 WHERE TargetInstance ISA 'Win32_NetworkAdapter'"); 

    var hostInstanceWatcher = new ManagementEventWatcher(new ManagementScope(@"\\.\root\CIMV2"), q); 
    hostInstanceWatcher.EventArrived += (sender, eventArgs) => 
    { 
     var adapter = (ManagementBaseObject) eventArgs.NewEvent.GetPropertyValue("TargetInstance"); 
     var status = (ushort) adapter.GetPropertyValue("NetConnectionStatus"); 
     switch (status) 
     { 
      case 2: Console.WriteLine("Connected"); 
       break; 
      case 7: Console.WriteLine("Disconnected"); 
       break; 
     } 
    }; 
    hostInstanceWatcher.Start(); 
    Console.WriteLine("Press any key to quit"); 
    Console.ReadKey(); 
+0

[This] (http://rextester.com/RMYB32053) est ce que j'utilise. Votre code a bien fonctionné mais il nous manque quelques événements qui signifient quand je connecte le câble ethernet, cela prend un certain temps à montrer connecté et quand je déconnecte le câble ethernet, cela prend un certain temps à montrer déconnecté. Je me demande comment puis-je le rendre réactif? Sens réactif lorsque je connecte un câble Ethernet, il devrait afficher connecté instantanément et quand déconnecter un câble Ethernet, il devrait être déconnecté instantanément. –

+0

L'intervalle d'interrogation est contrôlé par la clause WITHIN dans la requête: https://msdn.microsoft.com/en-us/library/aa394527(v=vs.85).aspx – lesscode

+0

J'ai mis 0,001 et sa réactif –