通過wlanapi連線無線網路
獲取無線掃查列表,步驟如下
1. 通過WlanOpenHandle開啟wifi服務控制代碼
2.WlanEnumInterfaces列舉無線網絡卡介面
3.WlanScan開啟主動掃查(呼叫為了避免在連線狀態下,網絡卡不主動獲取無線列表)
4.WlanGetAvailableNetworkList獲取有效網路資訊
詳見:https://docs.microsoft.com/en-us/windows/win32/api/wlanapi/nf-wlanapi-wlangetavailablenetworklist
連線具體無線網路
當前主要通過profile的方式連線
profile例項見:https://docs.microsoft.com/en-us/windows/win32/nativewifi/wireless-profile-samples
這裡以WPA2-Personal為例:
<?xml version="1.0" encoding="US-ASCII"?>
<WLANProfile xmlns="https://www.microsoft.com/networking/WLAN/profile/v1">
<name>SampleWPA2PSK</name>
<SSIDConfig>
<name>SampleWPA2PSK</name>
</SSID>
</SSIDConfig>
<connectionType>ESS</connectionType>
<connectionMode>auto</connectionMode>
<autoSwitch>false</autoSwitch>
<MSM>
<security>
<authEncryption>
<encryption>AES</encryption>
<useOneX>false</useOneX>
</authEncryption>
<sharedKey>
<keyType>passPhrase</keyType>
<protected>false</protected>
<keyMaterial> <!-- insert key here --> </keyMaterial>
</sharedKey>
</security>
</MSM>
</WLANProfile>
本地無profile的連線步驟如下:
1. 通過WlanOpenHandle開啟wifi服務控制代碼
2.WlanEnumInterfaces列舉無線網絡卡介面
3. 生成連線所需的profile
4. 呼叫WlanSetProfile連線網路
本地有profile的連線步驟如下:
1. 通過WlanOpenHandle開啟wifi服務控制代碼
2.WlanEnumInterfaces列舉無線網絡卡介面
3. 呼叫WlanConnect直接連線即可(WLAN_CONNECTION_PARAMETERS設定參考如下)
WLAN_CONNECTION_PARAMETERS param;
param.pDot11Ssid = NULL;
param.wlanConnectionMode = wlan_connection_mode_profile;
param.strProfile = profileName;
param.pDesiredBssidList = NULL;
param.dot11BssType = dot11_BSS_type_infrastructure;
param.dwFlags = WLAN_CONNECTION_HIDDEN_NETWORK;
斷開無線連線
1. 通過WlanOpenHandle開啟wifi服務控制代碼
2.WlanEnumInterfaces列舉無線網絡卡介面
3. 呼叫WlanDisconnect斷開網絡卡連線