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

时间:2009-08-12 11:59:50

标签: c# .net winforms

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

如果它是USB设备,我会简单地覆盖WndProc并捕获消息,如果它是WM_DEVICECHANGE,那么我是一个胜利者,我想知道它是否像这样简单,任何可能被插入的设备进入港口?

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

3 个答案:

答案 0 :(得分:2)

我自己从未使用过它,但我认为NetworkChange.NetworkAvailabilityChanged事件可能符合您的需求。

<强>更新

简短调查表明NetworkChange.NetworkAddressChanged可能效果更好:

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

答案 1 :(得分:0)

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

  • NetworkAddressChanged
  • NetworkAvailabilityChanged

在事件处理程序中,您可以检查所涉及的网络接口是否是以太网端口

答案 2 :(得分:0)

NetworkChange类为您提供在接口从down向上切换时触发的NetworkAvailabilityChanged事件,反之亦然。可能没有您所期望的那么低,但您并不具体追踪此事件。