1. 程式人生 > 其它 >通過wlanapi連線無線網路

通過wlanapi連線無線網路

技術標籤:技術類wifiwindows

獲取無線掃查列表,步驟如下

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>

<SSID>
<name>SampleWPA2PSK</name>
</SSID>
</SSIDConfig>
<connectionType>ESS</connectionType>
<connectionMode>auto</connectionMode>
<autoSwitch>false</autoSwitch>
<MSM>
<security>
<authEncryption>
<authentication>WPA2PSK</authentication>
<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斷開網絡卡連線