设为首页 加入收藏

TOP

VC++管理Wifi方法讲解
2018-01-22 17:24:35 】 浏览:404
Tags:管理 Wifi 方法 讲解

VC++管理Wifi

使用wlan native api来连接、断开、枚举Wifi信息。

这里只处理连接过的Wifi,没有链接过的不考虑。

PS: CSDN博客频道真是越改越烂!Fuck!

代码

// Demo1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #pragma comment(lib, "ole32.lib") #pragma comment(lib, "wlanapi.lib") void ssid2wchar(DOT11_SSID& pIn, WCHAR* pOut) { char tmp[33] = { 0 }; //for (int i=0;i< pIn.uSSIDLength; i++) //{ // sprintf(tmp+i, "%02X", pIn.ucSSID[i]&0xFF); //} memcpy(tmp, pIn.ucSSID, pIn.uSSIDLength); MultiByteToWideChar(CP_ACP, 0, tmp, strlen(tmp), pOut, 65); } int main() { CoInitialize(NULL); DWORD dwResult = 0; DWORD dwCurVersion = 0; HANDLE hClient = NULL; WCHAR GuidString[48] = { 0 }; PWLAN_INTERFACE_INFO_LIST pIfList = NULL; dwResult = WlanOpenHandle(2, NULL, &dwCurVersion, &hClient); if (dwResult != ERROR_SUCCESS) { wprintf(L"open wlan error!: %u\n", dwResult); goto end; } WlanEnumInterfaces(hClient, NULL, &pIfList); // 枚举WLAN设备 StringFromGUID2((pIfList->InterfaceInfo[0].InterfaceGuid), (LPOLESTR)&GuidString, sizeof(GuidString) / sizeof(*GuidString)); wprintf(L"Wlan nums: %u name[0]: %s GUID: %s\n", pIfList->dwNumberOfItems, pIfList->InterfaceInfo[0].strInterfaceDescription, GuidString); // 连接or断开wifi if (wlan_interface_state_connected == pIfList->InterfaceInfo[0].isState) { //WlanDisconnect(hClient, &pIfList->InterfaceInfo[0].InterfaceGuid, NULL);//DISCONNECT FIRST }else if (wlan_interface_state_disconnected == pIfList->InterfaceInfo[0].isState) { WLAN_CONNECTION_PARAMETERS wlanConnPara; wlanConnPara.wlanConnectionMode = wlan_connection_mode_profile; //YES,WE CONNECT AP VIA THE PROFILE wlanConnPara.strProfile = L"Tami1703-5G"; // set the profile name wlanConnPara.pDot11Ssid = NULL; // SET SSID NULL wlanConnPara.dot11BssType = dot11_BSS_type_infrastructure; //dot11_BSS_type_any,I do not need it this time. wlanConnPara.pDesiredBssidList = NULL; // the desired BSSID list is empty wlanConnPara.dwFlags = WLAN_CONNECTION_HIDDEN_NETWORK; //it works on my WIN7\8 WlanConnect(hClient, &(pIfList->InterfaceInfo[0].InterfaceGuid), &wlanConnPara, NULL); Sleep(2000); } // scan wifi skip, use hand // list wifi PWLAN_AVAILABLE_NETWORK_LIST pWifiList = NULL; dwResult = WlanGetAvailableNetworkList(hClient, &(pIfList->InterfaceInfo[0].InterfaceGuid), WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_MANUAL_HIDDEN_PROFILES, NULL, &pWifiList); if (dwResult == ERROR_SUCCESS) { wprintf(L"Wifi Nums: %u\n", pWifiList->dwNumberOfItems); for (int i=0; i < pWifiList->dwNumberOfItems;i++) { WLAN_AVAILABLE_NETWORK oneWifi = pWifiList->Network[i]; WCHAR pBuff[65] = { 0 }; ssid2wchar(oneWifi.dot11Ssid, pBuff); wprintf(L"[%d] Name: %s,\t Qos: %u, SSID: %s\n", i, lstrlen(oneWifi.strProfileName)>0?oneWifi.strProfileName:L"null", oneWifi.wlanSignalQuality, pBuff); } } end: system("\npause"); CoUninitialize(); return 0; }
     
    
   
  
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Linux下使用c++调用shell命令的方.. 下一篇C++ operator new 用法实例讲解

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目