Qt获取wifi列表,连接wifi后获取IP地址

本文介绍了如何在Windows环境下,利用Qt结合C++代码调用WlanAPI获取WiFi网络列表,并将这些网络名称填充到ComboBox中。同时,展示了如何读取本地主机的IP地址并显示在ComboBox中。主要涉及的技术包括Qt界面操作、Windows API调用和网络接口查询。

环境win7+qt5.13+MinGW32,台式机

直接上步骤了,网上看到的略显啰嗦,就是这么简单直接:

1、头文件 #include "windows.h",#include "wlanapi.h"

2、.pro设置连接路径(需要根据自己安装路径加载

LIBS += C:/Qt/Qt5.13.0/Tools/mingw730_32/i686-w64-mingw32\lib\libwlanapi.a

3、显示在combox控件内

ui->cbx_WifiName->clear();
    HANDLE  hClientHandle;
    DWORD dwError = ERROR_SUCCESS;//原来我DWORD MFC的数据类型,相当于unsigned long
    DWORD dwNegotiatedVersion;

    dwError = WlanOpenHandle(1, nullptr, &dwNegotiatedVersion, &hClientHandle);

    //连接不成功
    if (dwError != ERROR_SUCCESS)
    {
        qDebug()<<"未打开成功!";
        WlanCloseHandle(hClientHandle,nullptr);
        return;
    }
    PWLAN_INTERFACE_INFO_LIST  pInterfaceList;
    dwError = WlanEnumInterfaces(hClientHandle, nullptr,&pInterfaceList);
    //返回值还是DWRD类型的,成功的话是ERROR_SUCCESS
    if ( dwError != ERROR_SUCCESS )
    {
        ErroInf="未发现wifi相关列表!";
        WlanFreeMemory(pInterfaceList);//释放列表
        //释放内存,从Native Wifi函数返回的任何内存必须释放
        WlanCloseHandle(hClientHandle,nullptr);//关闭wlan
        return;
    }
    GUID &guid = pInterfaceList->InterfaceInfo[0].InterfaceGuid;
    PWLAN_AVAILABLE_NETWORK_LIST pWLAN_AVAILABLE_NETWORK_LIST = nullptr;

    WlanGetAvailableNetworkList(hClientHandle, &guid,2,nullptr, &pWLAN_AVAILABLE_NETWORK_LIST);
    
    if(pWLAN_AVAILABLE_NETWORK_LIST==nullptr)   //防止程序崩溃
        return;
    //添加到combox
    for (int i=0;i<pWLAN_AVAILABLE_NETWORK_LIST->dwNumberOfItems;i++)
    {
        ui->cbx_WifiName->addItem((char*)(pWLAN_AVAILABLE_NETWORK_LIST->Network[i].dot11Ssid.ucSSID));
    }

4、上图

读取IP地址

ui->cbx_Ip->clear();
    QString localHostName = QHostInfo::localHostName();
    qDebug() <<"localHostName:"<<localHostName;
    QHostInfo info = QHostInfo::fromName(localHostName);
    foreach(QHostAddress address,info.addresses())
    {
        if(address.protocol() == QAbstractSocket::IPv4Protocol)
            ui->cbx_Ip->addItem(address.toString());
    }

链接:Qt获取WIFI名称列表的实现方法-C++文档类资源-优快云下载 

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫听穿林打叶声儿

感觉有用的,一毛两毛不嫌少

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值