【问题标题】:How to get network manager device name in Qt programmatically?如何以编程方式在 Qt 中获取网络管理器设备名称?
【发布时间】:2018-10-26 20:47:48
【问题描述】:

有没有可能在windows中使用Qt/C++获取网络适配器设备名称(网络适配器描述)?

我使用了 QNetworkInterface,但它只返回适配器名称。我想知道哪个适配器是 USB 以太网。

QNetworkInterface interface;
QList<QNetworkInterface> IpList = interface.allInterfaces();
for (int i = 0; i < IpList.size(); i++)
    qDebug() << "Interface " << i << ":" << IpList.at(i).humanReadableName();

输出:

【问题讨论】:

    标签: c++ qt network-programming


    【解决方案1】:

    是否有可能获得网络适配器设备名称 (网络适配器说明)在windows中使用Qt/C++

    答案是否定的。 Qt 没有任何功能来获取设备名称(描述)。 QNetworkInterface 只能获取接口名称和硬件地址(IP)。

    在 Windows 上,您可以使用这个小代码示例。 pAdapter-&gt;Description 应该包含您要查找的值。

    #include <winsock2.h>
    #include <iphlpapi.h>
    #include <stdio.h>
    #include <QCoreApplication>
    #pragma comment(lib, "IPHLPAPI.lib")
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        PIP_ADAPTER_INFO pAdapterInfo;
        pAdapterInfo = (IP_ADAPTER_INFO *) malloc(sizeof(IP_ADAPTER_INFO));
        ULONG buflen = sizeof(IP_ADAPTER_INFO);
    
        if(GetAdaptersInfo(pAdapterInfo, &buflen) == ERROR_BUFFER_OVERFLOW) {
          free(pAdapterInfo);
          pAdapterInfo = (IP_ADAPTER_INFO *) malloc(buflen);
        }
    
        if(GetAdaptersInfo(pAdapterInfo, &buflen) == NO_ERROR) {
            PIP_ADAPTER_INFO pAdapter = pAdapterInfo;
            while (pAdapter) {
                printf("\tAdapter Name: \t%s\n", pAdapter->AdapterName);
                printf("\tAdapter Desc: \t%s\n", pAdapter->Description);
                printf("\n\n");
                pAdapter = pAdapter->Next;
          }
        }
        return a.exec();
    }
    

    示例输出

        Adapter Name:   {DF6051AF-8F8F-4AA8-94A9-34656236F101}
        Adapter Desc:   VMware Virtual Ethernet Adapter for VMnet1
    
    
        Adapter Name:   {13C8DF49-6D60-4702-9B3A-688B2E372E42}
        Adapter Desc:   TAP-Windows Adapter V9
    
    
        Adapter Name:   {42635D10-33A3-4FE9-96BA-1071808B6E2B}
        Adapter Desc:   Realtek PCIe GBE Family Controller
    
    
        Adapter Name:   {AA62E2BA-D140-4C2C-A1B5-58082ED21E00}
        Adapter Desc:   1 x 1 11b/g/n Wireless LAN PCI Express Half Mini Card-Ad apter
    
    
        Adapter Name:   {7AE540D3-69FE-4BEE-A5CA-482CAF06DAB8}
        Adapter Desc:   VMware Virtual Ethernet Adapter for VMnet8
    

    【讨论】:

    • 感谢您的回答。然后我必须搜索第 3 方库。 C# 已经有一个可以完成这项工作的内置库。也许我应该制作一个 DLL 来使用它。
    • Alex J.:查看我的更新答案,您可以自己用几行代码完成。
    • 哇,你救了我的命!它完美无缺!非常感谢您的支持。 :-)
    猜你喜欢
    • 2014-01-17
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 2010-10-06
    • 1970-01-01
    相关资源
    最近更新 更多