#region Win32
public const uint WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_ADHOC_PROFILES = 0x00000001; public const uint WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_MANUAL_HIDDEN_PROFILES = 0x00000002; public const uint ERROR_SUCCESS = 0; /// <summary> /// Gets SSIDs of available wireless LANs. /// </summary> /// <returns>SSIDs</returns> public static IEnumerable<string> GetAvailableNetworkSsids() { var clientHandle = IntPtr.Zero; var interfaceList = IntPtr.Zero; var availableNetworkList = IntPtr.Zero; try { uint negotiatedVersion; if (WlanOpenHandle( 2, // Client version for Windows Vista and Windows Server 2008 IntPtr.Zero, out negotiatedVersion, out clientHandle) != ERROR_SUCCESS) yield break; if (WlanEnumInterfaces( clientHandle, IntPtr.Zero, out interfaceList) != ERROR_SUCCESS) yield break; var interfaceInfoList = new WLAN_INTERFACE_INFO_LIST(interfaceList); foreach (var interfaceInfo in interfaceInfoList.InterfaceInfo) { if (WlanGetAvailableNetworkList( clientHandle, interfaceInfo.InterfaceGuid, WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_MANUAL_HIDDEN_PROFILES, IntPtr.Zero, out availableNetworkList) != ERROR_SUCCESS) continue; var networkList = new WLAN_AVAILABLE_NETWORK_LIST(availableNetworkList); foreach (var network in networkList.Network) { Debug.WriteLine("SSID: {1}", network.dot11Ssid ); yield return network.dot11Ssid.ToString(); } } } finally { if (availableNetworkList != IntPtr.Zero) WlanFreeMemory(availableNetworkList); if (interfaceList != IntPtr.Zero) WlanFreeMemory(interfaceList); if (clientHandle != IntPtr.Zero) WlanCloseHandle(clientHandle, IntPtr.Zero); } } }
}
上記のソースコードから
Wlan.GetAvailableNetworkSsids().ToArray();
でWiFiのSSIDの一覧を取得したいのですが表示されません。
ビルドエラー等は起きていません。
わかる方ご回答お願いいたします。
#endregion
具体的にどこでエラーになるとか、コードのどのようなパスを通っているかを示さないと、的確な回答が得られません。提示されたコードも 適切なコードブロックで表現しないと見づらいです。
回答1件
あなたの回答
tips
プレビュー