이에 대한 몇 가지 정보를 읽었습니다. WiFi를 통해 연결된 경우 this 대답을 수락하고 Managed WiFi API을 사용하여 SSID를받습니다. 여기 내 코드입니다 :이더넷을 통해 연결되어 있는지 확인하십시오. C#
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
그렇지 - , SSID를 반환
(이미 네트워크에 연결되어 있는지 여부를 확인했습니다.)
나는 WMI 및 NetworkInformation 네임 스페이스를 모두 보았지만 찾고있는 것도 제공하지 않습니다. WlanApi.cs에서 찾고
는 예외가 여기에 슬로우됩니다 : 당신은 당신이 Win32Exception
으로보고 예외를 (잡을 수
어떤 예외가 발생하고 있습니까? 단순히 예외를 잡아 "no wifi available"상태로 취급 할 수 있습니까? 네이티브 API는 [여기] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms706274 (v = vs.85) .aspx)입니다. 라이브러리에서 예외를 처리하는 것을 좋아하지 않는다면 직접 래퍼를 작성하고 직접 처리 할 수 있습니다. 이 API를 사용하면 인터페이스를 찾을 수 있으며 각 인터페이스에서 사용할 수있는 네트워크를 열거 할 수 있습니다. 기존 코드로 Wi-Fi를 통해 연결되었는지 여부를 알 수 있기 때문에 요청하는 내용이 명확하지 않습니다. –
@PeterDuniho 나는 예외를 잡으려고 생각하지 않았다. 내 잘못이야. 그것은'Win32Exception'을 던져서 잡았고 필요한 것으로 돌아 왔습니다. 답변으로 게시 코드를 받아 들일 것입니다. – wmash
알았어, 끝냈어. :) –