現在、Managed Wifi APIを使用して、デバイスが接続されているワイヤレスネットワークのSSIDを取得しています。無線LANにのみ接続されていることを確認する
public string getSSID() {
try {
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)));
}
return ConnectedSSIDs[0];
} catch (Win32Exception) {
return EMPTY;
} catch (Exception Ex) {
throw Ex;
}
}
現在、このことから、私は(SSIDがまだその状況に存在するため)私は無線LANとイーサネットに接続されていますかどうかを判断することができますか、単にイーサネット:ここに私の方法です。
私はちょうど私がWifiに接続されているかどうかと、それに加えてイーサネットではないかどうかを差し引きたいと思います。
は、私が見て持っていた:
驚くべきことに、(唯一の無線LANに接続されている)のWin32_NetworkAdapterのADAPTERTYPEプロパティを見て、私はまだ」を返されていますイーサネット802.3 ""の代わりに "ワイヤレス"これは私が期待しているものです。
残念ながら、私は方法があるとは思わないマネージドWifi API私が欲しいものを達成する。
EDITは、だから私は、これらの3つの定数が定義されている:
private const string WIFI_AND_ETHERNET = "WIFI & ETHERNET";
private const string WIFI = "WIFI";
private const string ETHERNET = "ETHERNET";
現在、私は上に示している方法は、ネットワーク接続がETHERNET
かWIFI_AND_ETHERNET
であるかどうかを控除することができます。
これは、SSIDが使用可能かどうかを確認することで行います。その場合は、WIFI_AND_ETHERNET
が返されますが、存在しない場合はETHERNET
のみが返されます。私が今必要なもの
は、ネットワーク接続がWIFI
ONLYまたはWIFI_AND_ETHERNET
一緒
この:https://bytes.com/topic/c-sharp/answers/657473-wmi-wifi-discovery –
@x ...疑問もおそらく達成することができます – wmash
ソリューションの仕事でもありませんgen_physical_mediumを使用してndisでこれを行います。これは、Bluetoothイーサネットかワイヤレスラボかどうかを指定する列挙型を返します。https://msdn.microsoft.com/en-us/library/windows/hardware/ff569621(v=vs.85).aspx – rfkortekaas