Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WMI中检测以太网电缆?_C#_.net_Wmi_Code Generation_Ethernet - Fatal编程技术网

C# 在WMI中检测以太网电缆?

C# 在WMI中检测以太网电缆?,c#,.net,wmi,code-generation,ethernet,C#,.net,Wmi,Code Generation,Ethernet,我已经在我的计算机上安装了WMI代码创建者,我是从中安装的 我想知道当以太网线连接到计算机时,我需要从WMI代码创建者应用程序中选择什么名称空间和类动态或静态,如下图所示,以便在WMI中获得回拨 当它与计算机连接时,应该说是以太网电缆连接 当它与计算机断开连接时,应该说以太网电缆断开连接 选择合适的名称空间和类后,我将使用代码创建者提供的C代码,并在我的计算机上运行它,以检测计算机上的网络更改 这样的事情应该让你开始: var q = new WqlEventQuery("SELECT

我已经在我的计算机上安装了WMI代码创建者,我是从中安装的

我想知道当以太网线连接到计算机时,我需要从WMI代码创建者应用程序中选择什么名称空间和类动态或静态,如下图所示,以便在WMI中获得回拨

当它与计算机连接时,应该说是以太网电缆连接

当它与计算机断开连接时,应该说以太网电缆断开连接

选择合适的名称空间和类后,我将使用代码创建者提供的C代码,并在我的计算机上运行它,以检测计算机上的网络更改


这样的事情应该让你开始:

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

我投票结束这个问题,因为你似乎对开发自己的程序不感兴趣,只是用现有的工具录制宏。关于使用普通应用程序的问题属于超级用户。@BenVoigt我是WMI和C的初学者,所以对它的了解较少。小小的指针会给我一个开发自己程序的想法。这就是我正在使用的。您的代码确实有效,但我们缺少一些事件,这意味着当我连接以太网电缆时,显示已连接需要一些时间,而当我断开以太网电缆时,显示已断开需要一些时间。我想知道如何才能使其响应?响应意味着当我连接任何以太网电缆时,它应立即显示已连接,当断开任何以太网电缆时,它应立即显示已断开。轮询间隔由查询中的INTERNAIN子句控制:我已输入0.001及其响应它能输出多小?它能像0.00001一样吗?直接从文档中可以看出:轮询间隔是一个浮点数,可以是小数,以接受小于1秒的值。但是,间隔应表示秒数,而不是非常小的值(如0.001),因为指定太小的值可能会导致WMI由于轮询的资源密集性而拒绝无效的语句。