2009-08-12 7 views
6

Je souhaite détecter lorsqu'un périphérique est connecté à un port Ethernet de la machine sur laquelle s'exécute mon application. Je sais comment faire avec un port USB mais le problème est, le port n'est pas USB!Détection de l'insertion/suppression de port Ethernet dans mon application winforms?

Si c'était un périphérique USB je remplacerais simplement WndProc et attraperais le message, si c'est WM_DEVICECHANGE, alors je suis sur un gagnant, je me demandais si c'était aussi simple que cela avec n'importe quel appareil qui pourrait être branché sur le port?

Je ne veux pas savoir s'il se passe quelque chose, ou si le périphérique fonctionne, simplement pour savoir s'il y a eu une insertion ou un retrait.

Répondre

2

Je ne l'ai jamais utilisé moi-même, mais je pense que l'événement NetworkChange.NetworkAvailabilityChanged pourrait répondre à vos besoins.

Mise à jour

Une brève enquête indique que NetworkChange.NetworkAddressChanged pourrait mieux fonctionner:

public static void Main() 
{ 

    NetworkChange.NetworkAddressChanged += (s, e) => 
    { 
     NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); 
     foreach (var item in nics) 
     { 
      Console.WriteLine("Network Interface: {0}, Status: {1}", item.Name, item.OperationalStatus.ToString()); 
     } 
    }; 

    string input = string.Empty; 
    while (input != "quit") 
    { 
     input = Console.ReadLine(); 
    } 
} 
0

Je ne suis pas sûr que ce soit exactement adapté à vos besoins, mais vous pouvez jeter un oeil à la System.Net.NetworkInformation.NetworkChange classe, qui a 2 événements que vous pourriez utiliser:

  • NetworkAddressChanged
  • NetworkAvailabilityChanged

Dans le gestionnaire d'événements, vous pouvez vérifier si l'interface réseau impliqué est un port Ethernet

0

La classe NetworkChange vous offre un événement NetworkAvailabilityChanged déclenché lorsque les interfaces passent du bas vers le haut ou vice versa. Peut-être pas aussi bas niveau que vous pourriez être à la recherche, mais vous n'êtes pas spécifique dans votre objectif de suivi de cet événement.

Questions connexes