C# 在我的winforms应用程序中检测以太网端口插入/删除?

C# 在我的winforms应用程序中检测以太网端口插入/删除?,c#,.net,winforms,C#,.net,Winforms,我想检测设备何时连接到运行我的应用程序的机器的以太网端口。我知道如何使用USB端口实现这一点,但问题是,该端口不是USB 如果是USB设备,我会简单地覆盖WndProc并捕获消息,如果是WM_DEVICECHANGE,那么我就成功了,我想知道,对于任何可能插入端口的设备,它是否像这样简单 我不想知道是否有任何事情发生,或者设备是否正常工作,只是想知道是否有插入或删除操作。我自己从未使用过它,但我认为该事件可能适合您的需要 更新 一项简短的调查表明,这可能会更好: public static vo

我想检测设备何时连接到运行我的应用程序的机器的以太网端口。我知道如何使用USB端口实现这一点,但问题是,该端口不是USB

如果是USB设备,我会简单地覆盖WndProc并捕获消息,如果是WM_DEVICECHANGE,那么我就成功了,我想知道,对于任何可能插入端口的设备,它是否像这样简单


我不想知道是否有任何事情发生,或者设备是否正常工作,只是想知道是否有插入或删除操作。

我自己从未使用过它,但我认为该事件可能适合您的需要

更新

一项简短的调查表明,这可能会更好:

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();
    }
}

我不确定这是否完全适合您的需要,但您可以看看
System.Net.NetworkInformation.NetworkChange
类,它有两个事件可供使用:

  • 网络地址已更改
  • 网络可用性已更改

在事件处理程序中,您可以检查所涉及的网络接口是否为以太网端口。NetworkChange类为您提供了一个NetworkAvailabilityChanged事件,该事件在接口从向下切换到向上时触发,反之亦然。可能没有你想要的那么低,但是你在跟踪这个事件时没有明确的目标