我已经阅读了一些相关资料。我按照this接受的答案,如果我通过WiFi连接,则使用Managed WiFi API获取SSID。这是我的代码:
private void setSSID() {
WlanClient wlan = new WlanClient();
Collection<String> connectedSsids = new Collection<string>();
foreach (WlanClient.WlanInterface wlanInterface in wlan.Interfaces) {
Wlan.Dot11Ssid ssid = wlanInterface.CurrentConnection.wlanAssociationAttributes.dot11Ssid;
connectedSsids.Add(new String(Encoding.ASCII.GetChars(ssid.SSID, 0, (int)ssid.SSIDLength)));
}
}
如果我通过WiFi连接,这将获得完美的SSID,但如果仅通过以太网连接则会引发异常。理想的解决方案:
setSSID()
(或具有相似效果的内容) null
/ 0
/ undefined
我查看了 WMI 和 NetworkInformation 命名空间,但都没有提供我要查找的内容。
查看 WlanApi.cs < / em>,抛出异常:
public Wlan.WlanConnectionAttributes CurrentConnection {
get {
int valueSize;
IntPtr valuePtr;
Wlan.WlanOpcodeValueType opcodeValueType;
Wlan.ThrowIfError(
Wlan.WlanQueryInterface(client.clientHandle, info.interfaceGuid, Wlan.WlanIntfOpcode.CurrentConnection, IntPtr.Zero, out valueSize, out valuePtr, out opcodeValueType));
try {
return (Wlan.WlanConnectionAttributes)Marshal.PtrToStructure(valuePtr, typeof(Wlan.WlanConnectionAttributes));
}
finally {
Wlan.WlanFreeMemory(valuePtr);
}
}
}
另见:
答案 0 :(得分:2)
您可以捕获异常(您报告为Win32Exception
),并将其视为“无WiFi可用”条件。
如果您愿意,可以查看ErrorCode
或HResult
属性以查看异常情况,以确保在缺少WiFi的情况下出现错误,而不是其他更多问题例外。在后一种情况下,您可能希望重新抛出异常(至少在您决定处理 类型的错误的良好策略之前)。
还可以直接使用native wireless LAN API,从中处理错误代码/结果,而不是处理异常。但我认为在你的情况下,处理抛出的异常是最简单的,因为它可以正常工作。