C++獲取Windows系統的WIFI列表
之前寫過一篇 Qt獲取Windows系統的WIFI列表的文章,原理是通過cmd命令來實現的,現在發現直接調用Windows API會更簡單,所以記錄一下
Qt 獲取WIFI列表:http://www.rzrgm.cn/shiyixirui/p/17965357
代碼:
#include <windows.h> #include <wlanapi.h> #include <objbase.h> #include <wtypes.h> #include <iostream> #include <vector> #pragma comment(lib, "wlanapi.lib") #pragma comment(lib, "ole32.lib") int test() { // 初始化COM HRESULT ret = CoInitializeEx(NULL, COINIT_MULTITHREADED); // Handle to the WLAN API HANDLE hClient = NULL; DWORD dwMaxClient = 2, dwCurVersion = 0, dwResult = 0; // 打開WIFI模塊 dwResult = WlanOpenHandle(dwMaxClient, NULL, &dwCurVersion, &hClient); if (dwResult != ERROR_SUCCESS) { return; } // 枚舉WIFI列表 PWLAN_INTERFACE_INFO_LIST pIfList = NULL; dwResult = WlanEnumInterfaces(hClient, NULL, &pIfList); if (dwResult != ERROR_SUCCESS) { WlanCloseHandle(hClient, NULL); return; } // Iterate through the list of interfaces for (DWORD i = 0; i < pIfList->dwNumberOfItems; i++) { WLAN_INTERFACE_INFO wlanIfInfo = pIfList->InterfaceInfo[i]; // Get the list of available networks PWLAN_AVAILABLE_NETWORK_LIST pNetworkList = NULL; dwResult = WlanGetAvailableNetworkList(hClient, &wlanIfInfo.InterfaceGuid, 0, NULL, &pNetworkList); if (dwResult != ERROR_SUCCESS) { continue; } // Iterate through the list of available networks for (DWORD j = 0; j < pNetworkList->dwNumberOfItems; j++) { WLAN_AVAILABLE_NETWORK network = pNetworkList->Network[j]; QString name = QString::fromUtf8(QByteArray(reinterpret_cast<char*>(network.dot11Ssid.ucSSID))); qDebug() << "SSID:" << name; if (!name.isEmpty()) { ui.wifi_name->addItem(name); } } // 釋放 pNetworkList WlanFreeMemory(pNetworkList); } WlanFreeMemory(pIfList); // 釋放WIFI列表 WlanCloseHandle(hClient, NULL); // 關閉WIFI模塊 CoUninitialize(); // 反初始化COM }



浙公網安備 33010602011771號