无线网络控制使用Native wifi API 函数来实现

1 查找本机无线网卡

if ( WlanOpenHandle(WLAN_API_VERSION, NULL, &dwServiceVersion, &hClient) != ERROR_SUCCESS)

{wsprintf(stTemp,L"Could not return handle!");}

WlanOpenHandle(WLAN_API_VERSION,  //IN 本机支持的wlan api 版本号,1=XP ,2=vista

NULL,

&dwServiceVersion,  //OUT  negotiated version

&hClient)                  //client handle

2 列出本机可用的无线网卡

WlanEnumInterfaces(hClient,NULL,

&pwLanInterfaceList)  //pwLanInterfaceList->dwNumberOfItems 无线网卡的数量

WlanCloseHandle(hClient,NULL);  //close handle

3 读GUID及网卡信息

WLAN_CONNECTION_PARAMETERS wLanConnPara;
 memset(&wLanConnPara,0,sizeof(WLAN_CONNECTION_PARAMETERS));

pwLanInterfaceList->dwIndex=i;
  wLanGUID.Data1=pwLanInterfaceList->InterfaceInfo->InterfaceGuid.Data1;
  wLanGUID.Data2=pwLanInterfaceList->InterfaceInfo->InterfaceGuid.Data2;
  wLanGUID.Data3=pwLanInterfaceList->InterfaceInfo->InterfaceGuid.Data3;
  for(int j=0;j<8;j++)
  { wLanGUID.Data4[j]=pwLanInterfaceList->InterfaceInfo->InterfaceGuid.Data4[j];}

wsprintf(stTemp,L" GUID:%lX-%X-%X-%02X%02X%02X%02X%02X%02X%02X%02X .",wLanGUID.Data1,wLanGUID.Data2,wLanGUID.Data3,
   wLanGUID.Data4[0],wLanGUID.Data4[1],wLanGUID.Data4[2],wLanGUID.Data4[3],wLanGUID.Data4[4],wLanGUID.Data4[5],
   wLanGUID.Data4[6],wLanGUID.Data4[7]);

pwLanInterfaceList->InterfaceInfo->strInterfaceDescription //

4 网卡状态 :

switch(pwLanInterfaceList->InterfaceInfo->isState ) //WLAN_INTERFACE_STATE

{ case   wlan_interface_state_not_ready:
            wsprintf(stTemp, L"Wireless Card Is not Ready!");
            break;
  case wlan_interface_state_discovering:
            wsprintf(stTemp, L"Auto configuration is discovering the settings for the network!");
            break;
  case wlan_interface_state_associating:
            wsprintf(stTemp,L"The interface is attempting to associate with a network!");
            break;
  case wlan_interface_state_disconnecting: //connect a network
            wsprintf(stTemp,L"The interface is disconnecting from the current network!");

case  wlan_interface_state_disconnected:

            gbReadForT = true;

default : //  已经连接网络  先断开
           wsprintf(stTemp,L"The interface was connected to wireless network success!");

WlanDisconnect(hClient,&wLanGUID,NULL); // use GUID distinguish wlan card

gbReadForT = true;

}

5 查找可用的无线网络列表

WlanGetAvailableNetworkList(hClient, &wLanGUID, 0, NULL, &pwLanNetList)

//pwLanNetList->dwNumberOfItems  无线网络的个数

for (DWORD dwNetIndex=0;dwNetIndex< (pwLanNetList->dwNumberOfItems);dwNetIndex++)

{
          pwLanNetList->dwIndex = dwNetIndex; //set current index
          pBssEntry=(WLAN_AVAILABLE_NETWORK *) & pwLanNetList->Network[dwNetIndex]; //

switch (pBssEntry->dot11BssType) //

{

case dot11_BSS_type_infrastructure:
                              wsprintf(stTemp,L" BSS Network type[%u]:Infrastructure (%u)\n",dwNetIndex, pBssEntry->dot11BssType);
                              break;
                     case dot11_BSS_type_independent:
                              wsprintf(stTemp,L" BSS Network type[%u]:Infrastructure (%u)\n",dwNetIndex, pBssEntry->dot11BssType);
                              break;
                     default:
                              wsprintf(stTemp,L" BSS Network type[%u]:Other (%lu)\n", dwNetIndex,pBssEntry->dot11BssType);
                     break;

}

wsprintf(stTemp,L"Is Net Connectable:0X%lX",pBssEntry->bNetworkConnectable);

if (pBssEntry->dot11Ssid.uSSIDLength == 0)
                 wsprintf(stTemp,L"SSID[%u] : NULL",dwNetIndex);
          else
          {  
                 memset(&Dot11_ssid,0,sizeof(DOT11_SSID));
                 Dot11_ssid.uSSIDLength = pBssEntry->dot11Ssid.uSSIDLength;
                 for (k = 0; k < pBssEntry->dot11Ssid.uSSIDLength; k++)
                  {
                        sBssTemp[k]= pBssEntry->dot11Ssid.ucSSID[k];
                        Dot11_ssid.ucSSID[k]=pBssEntry->dot11Ssid.ucSSID[k];
                  }
                  sBssTemp[k]='\0';
                  MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,(LPCSTR)sBssTemp,k+1,wsBssTemp,MAX_PATH);
                  wsprintf(stTemp,L"SSID[%u] :   %s",dwNetIndex,wsBssTemp);
           }

}

6 连接指定的无线网络

memset(&wLanConnPara,0,sizeof(WLAN_CONNECTION_PARAMETERS));
     wLanConnPara.wlanConnectionMode = wlan_connection_mode_discovery_unsecure;
     wLanConnPara.strProfile=NULL;
     wLanConnPara.pDot11Ssid = &Dot11_ssid;
     wLanConnPara.pDesiredBssidList = NULL;
     wLanConnPara.dot11BssType = pBssEntry->dot11BssType;
     wLanConnPara.dwFlags = 0;
     RedrawWindow();
     if((dwError=WlanConnect(hClient,&wLanGUID,&wLanConnPara,NULL) ) == ERROR_SUCCESS)

7  信号强度

WlanQueryInterface(hClient,&wLanGUID,wlan_intf_opcode_current_connection,NULL,&dwSize,(PVOID *)&pwLanConnection,NULL);

m_nTestSignal=(int)pwLanConnection->wlanAssociationAttributes.wlanSignalQuality; //信号强度

8 释放资源

WlanFreeMemory(pwLanNetList);

无线网络连接 wlan test相关推荐

  1. 如何启用计算机上的无线网络连接,告诉大家win10无线网络连接如何打开

    有不少的网友想知道win10无线网络连接如何打开呢?其实win10无线网络连接如何打开的方法是很简单的,下面就让我给大家介绍一下关于win10无线网络连接如何打开的解决方法吧. win10无线网络连接 ...

  2. 如何打开计算机无线功能灰色,计算机没有wifi,仅显示宽带连接. 右键单击灰色的无线网络连接图...

    引言: 说到计算机,我们许都知道一个朋友问笔记本电脑不显示wifi列表. 另外,有人要求我的计算机无法显示可用的网络. 到底是怎么回事?实际上,笔记本电脑只能与宽带连接. 今天,我将告诉您,计算机没有 ...

  3. 小米机顶盒显示网络无法连接服务器,小米盒子无线网络连接不上怎么回事 - 卡饭网...

    无线网络连接不上怎么回事,如何解决 无线网络连接不上怎么回事,如何解决 无线网络连接不上怎么回事,如何解决,很多电脑用户可能会遇到这个问题. 一:先检查下你的无线网络开关是否打开,没打开请打开 二:检 ...

  4. 禁用计算机的网络连接无线网络连接,电脑设置了禁用网络,连接不上WIFI.怎么解除...

    电脑设置了禁用网络,连接不上WIFI.怎么解除 电脑禁用网络连接不上WIFI的解决方法如下: 1. 确认FN快捷键已经打开,确认FN快捷键驱动,电源管理软件和无线网卡驱动正常安装; 2. 确认是否开启 ...

  5. drcom上网登录窗不弹出_无线网络连接后不能弹出浏览器登录页面是怎么回事?

    展开全部 1.浏览器问题: 尽量使用IE浏览器并关闭阻止窗口弹出功能. 打开浏览器,点击浏62616964757a686964616fe4b893e5b19e31333365633939览器上方工具栏 ...

  6. 如何用本地连接共享无线网络连接

    这个共享后要启动虚拟无线网络这个功能,win7自带. ①:win键+R打开运行程序,输入cmd并回车打开命令指令符 ②:在命令指令符中输入 netsh wlan set hostednetwork m ...

  7. android 删除wifi文件,删除无线网络连接信号(wifi)(图文教程)

    无线终端连接无线信号成功后,系统会自动保存该信号的配置文件.当无线路由器更改无线参数(如更改加密方式或无线密码等),会引起终端连接不上信号,此时需要删除该配置文件. 本文提供常见操作系统下删除配置文件 ...

  8. 计算机一体机怎样连接无线网络连接不上,联想一体机怎么连接wifi

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 联想一体机电脑一般是没有预装内置无线网卡模块的,所以需要核对电脑包装内的装箱单中是否表明电脑带有无线网卡模块.若有,安装好相应的驱 ...

  9. android找不到 windows 7 共享无线网络连接,Windows 7下wifi共享上网设置教程 没有无线路由器也能用wifi...

    有时候碰到有网线而没有无线路由器,又想多台笔记本和手机,ipad都能同时上网,网上有许多软件能实现这样的功能,如Virtual Router,MaryFi,ApWiFi,Connectify等等,这些 ...

  10. 手机连无线网后没有网络连接到服务器,手机无线网络连接上但上不了网

    随着WiFi的普及,越来越多的人开始使用无线路由器进行无线上网,比如笔记本电脑,智能手机都可以共享一个路由器进行上网,有时候,我们在用笔记本进行无线WiFi上网的时候,电脑右下角的无线连接图标明明显示 ...

最新文章

  1. 实现工控机4U断电后自动重启功能
  2. springboot整合postgre和hbase实现互相交互功能
  3. 远程包含shell时,上传shell时所遇到一句话木马不能上传问题解决的办法(这里为单引号与双引号问题)
  4. RK3288_Android7.1调试RTC总结(二)
  5. pycharm更换python版本
  6. golang db事务的统一封装
  7. keil转换c为汇编语言,如何用Keil生成bin、汇编、C与汇编混合文件?
  8. iOS设置App的名称和简单的版本国际化与本地化
  9. 还原永恒之蓝下载器PS脚本混淆
  10. anime.js的学习小结
  11. Android Studio 网络调试
  12. 中式英语如何产生?该怎么办?
  13. Shodan完全手册部分翻译(1)
  14. JSP标签的简单使用
  15. 本科毕业5年后入职985高校担任博导,这位小姐姐太强了!
  16. android 8.1 9.0 10.0 app应用卸载黑名单
  17. [Usaco2008 Oct]笨重的石子 DP
  18. 2021年全球聚二甲基二烯丙基氯化铵收入大约252.5百万美元,预计2028年达到307.8百万美元,2022至2028期间,年复合增长率CAGR为 %。同时2020年全球聚二甲基二烯丙基氯化铵销量大
  19. WRF模式安装(ubuntu)
  20. 如何在寒冷的冬季,不摘手套玩手机

热门文章

  1. 登录邮恰显示服务器登录失败,邮洽邮箱收不到邮件是什么原因?
  2. 如何迅速分析出系统CPU的瓶颈在哪里
  3. 汉语拼音音节的歧义指数
  4. fatal error LNK1123 错误解决方法
  5. SEO经典面试问题及答案
  6. java设计模式-单例模式
  7. Camunda/Flowable/Activiti技术发展史/盘古BPM框架对比最新版
  8. 用算法判断输入的一个数是几位数
  9. 标准差SD、相对标准偏差RSD学习和python实现
  10. 集合中的(交集,并集,差集,补集,对称差集)