Dala_ 2017-07-09 18:57 采纳率: 62.5%
浏览 1305
已采纳

windows 获取的Wlan列表 怎么读取第二位及其以后的Wlan信息

如题 使用WlanGetAvailableNetworkList 获取的列表存储在_WLAN_AVAILABLE_NETWORK_LIST 结构体中,比如我本次获得的列表中 dwNumberOfItems的值是7 ,意味着会有7个Wlan信息,但是NetWork定义时指定的数组长度是1 请问怎么获得这七个除了第一个之外的Wlan信息_WLAN_AVAILABLE_NETWORK_LIST结构如图图片说明

  • 写回答

1条回答 默认 最新

  • oyljerry 2017-07-09 22:52
    关注
     #include <locale>
    #include <stdio.h>
    #include <Windows.h>
    #include <wlanapi.h>
    #pragma comment(lib, "Wlanapi.lib")
    
    int main(int ar,char*aru[])
    {
    int id=0;
    char *lang = setlocale(LC_CTYPE,NULL);//获取当前的本地语言
    setlocale(LC_ALL, "chs");//设置本地语言
    HANDLE ClientHandle;DWORD nv,i,c;PWLAN_INTERFACE_INFO_LIST ilist;PWLAN_AVAILABLE_NETWORK_LIST nlist;static char ssid[36];
    if(WlanOpenHandle(1,0,&nv,&ClientHandle)==0)
    {
    if(WlanEnumInterfaces(ClientHandle,0,&ilist)==0)
    {
    for (i = 0; i< ilist->dwNumberOfItems; i++) {
    wprintf(L"\n\n  %s%s\n\n",L"网卡:",ilist->InterfaceInfo[i].strInterfaceDescription);
    if(WlanGetAvailableNetworkList(ClientHandle,&ilist->InterfaceInfo[i].InterfaceGuid,0,0,&nlist)==0){
    for(c=0;c<nlist->dwNumberOfItems;c++)
    {
    memcpy(ssid,nlist->Network[c].dot11Ssid.ucSSID,nlist->Network[c].dot11Ssid.uSSIDLength);
    ssid[nlist->Network[c].dot11Ssid.uSSIDLength]=0;
    printf("   %3d. SSID:  %-25s  信号强度:  %5d\n",id++,ssid,nlist->Network[c].wlanSignalQuality);
    }
    WlanFreeMemory(nlist);
    }
    }
    WlanFreeMemory(ilist);
    }
    system("pause>nul");
    WlanCloseHandle(ClientHandle,0);
    }
    setlocale(LC_ALL, lang);//恢复语言
    system("pause");
    return true;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?