WiFi信息
官网范例:https://docs.microsoft.com/en-us/windows/win32/api/wlanapi/nf-wlanapi-wlangetavailablenetworklist
简单范例:
#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <iostream>
#include <wlanapi.h>
#include <objbase.h>
#include <wtypes.h>
#include <string>
#include<iomanip>
#pragma comment(lib, "wlanapi.lib")
#pragma comment(lib, "ole32.lib")
using namespace std;
int main()
{
HANDLE hClient = NULL;
DWORD dwMaxClient = 2;
DWORD dwCurVersion = 0;
DWORD dwResult = 0;
DWORD dwRetVal = 0;
int iRet = 0;
WCHAR GuidString[39] = { 0 };
unsigned int i, j;
PWLAN_INTERFACE_INFO_LIST pIfList = NULL;
PWLAN_INTERFACE_INFO pIfInfo = NULL;
PWLAN_AVAILABLE_NETWORK_LIST pBssList = NULL;
PWLAN_AVAILABLE_NETWORK pBssEntry = NULL;
int iRSSI = 0;
dwResult = WlanOpenHandle(dwMaxClient, NULL, &dwCurVersion, &hClient);
if (dwResult != ERROR_SUCCESS)
{
wprintf(L"WlanOpenHandle failed with error: %u\n", dwResult);
system("echo WlanOpenHandle failed with error >> Log");
return 1;
}
dwResult = WlanEnumInterfaces(hClient, NULL, &pIfList);
if (dwResult != ERROR_SUCCESS)
{
wprintf(L"WlanEnumInterfaces failed with error: %u\n", dwResult);
system("echo WlanEnumInterfaces failed with error >> Log");
return 1;
}
else
{
for (i = 0; i < (int)pIfList->dwNumberOfItems; i++)
{
pIfInfo = (WLAN_INTERFACE_INFO *)&pIfList->InterfaceInfo[i];
iRet = StringFromGUID2(pIfInfo->InterfaceGuid, (LPOLESTR)&GuidString, sizeof(GuidString) / sizeof(*GuidString));
dwResult = WlanGetAvailableNetworkList(hClient, &pIfInfo->InterfaceGuid, 0, NULL, &pBssList);
if (iRet == 0) {
wprintf(L"StringFromGUID2 failed\n");
system("echo StringFromGUID2 failed with error >> Log");
}
else {
wprintf(L"InterfaceGUID[%d]: %ws\n", i, GuidString);
}
wprintf(L"Interface Description[%d]: %ws", i,
pIfInfo->strInterfaceDescription);
wprintf(L"\n");
if (dwResult != ERROR_SUCCESS)
{
wprintf(L"WlanGetAvailableNetworkList failed with error: %u\n",dwResult);
system("echo WlanGetAvailableNetworkList failed with error >> Log");
dwRetVal = 1;
}
else
{
for (j = 0; j < pBssList->dwNumberOfItems; j++)
{
pBssEntry = (WLAN_AVAILABLE_NETWORK *)& pBssList->Network[j];
cout << j << "\t" << "WiFi:" << pBssEntry->dot11Ssid.ucSSID << setw(20- pBssEntry->dot11Ssid.uSSIDLength) << "\t" << "SignalQuality:" << pBssEntry->wlanSignalQuality << endl;
}
}
}
}
if (pBssList != NULL)
{
WlanFreeMemory(pBssList);
pBssList = NULL;
}
if (pIfList != NULL)
{
WlanFreeMemory(pIfList);
pIfList = NULL;
}
system("pause");
return 0;
}
运行结果: