不确定您到底在追求什么,但在与 IMbnInterface 和 GetSignalStrength() 苦苦挣扎之后(请参阅https://msdn.microsoft.com/en-us/library/windows/desktop/dd323166(v=vs.85).aspx)不成功,我发现你可以使用 WMI 获得很多信息:
int maxBandwidth = 0;
string query = "SELECT * FROM Win32_PerfRawData_Tcpip_NetworkInterface";
ManagementObjectSearcher moSearch = new ManagementObjectSearcher(query);
ManagementObjectCollection moCollection = moSearch.Get();
foreach (ManagementObject mo in moCollection)
{
if (Convert.ToInt32(mo["CurrentBandwidth"]) > maxBandwidth)
{
// Instead of CurrentBandwidth you may want to use BytesReceivedPerSec
maxBandwidth = Convert.ToInt32(mo["CurrentBandwidth"]);
}
}
请在此处查看答案:确定网络连接链接速度,这是您可以获得的属性列表:https ://msdn.microsoft.com/en-us/library/aa394293(VS.85).aspx
更新:
请注意,我可以在 Windows 7 或 Windows 8.1 上的 Visual Studio 2015 中构建和调试上述代码(作为更大的 WPF 应用程序的一部分),并且我可以将相同的应用程序部署到成功运行的 Windows 7 上。出于某种原因,当我在 Windows 8.1 上部署此应用程序时,我收到一条Invalid query
消息。
更新 2:
请注意,我发现您无法像在 Windows 7 中那样在 Windows 8.1 中获取网络信息,因为System.Management
命名空间在 Windows 8.1 上不可用。请参阅https://code.msdn.microsoft.com/windowsapps/network-information-sample-63aaa201
string connectionProfileInfo = string.Empty;
ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();
if (InternetConnectionProfile == null)
{
rootPage.NotifyUser("Not connected to Internet\n", NotifyType.StatusMessage);
}
else
{
connectionProfileInfo = GetConnectionProfile(InternetConnectionProfile);
OutputText.Text = connectionProfileInfo;
rootPage.NotifyUser("Success", NotifyType.StatusMessage);
}
// Which calls this function, that allows you to determine how strong the signal is and the associated bandwidth
string GetConnectionProfile(ConnectionProfile connectionProfile)
{
// ...
if (connectionProfile.GetSignalBars().HasValue)
{
connectionProfileInfo += "====================\n";
connectionProfileInfo += "Signal Bars: " + connectionProfile.GetSignalBars() + "\n";
}
// ...
}