Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Уровень сигнала интернета c#

Глеб Гарусин Ученик (9), на голосовании 2 месяца назад
 public string GetConnectionType() 
{
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface nic in nics)
{
if (nic.OperationalStatus == OperationalStatus.Up)
{
if (nic.NetworkInterfaceType == NetworkInterfaceType.Wireless80211)
{
return "Wi-Fi";
}
else if (nic.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
{
return "Ethernet";
}
}
}
return "Unknown";
}

public int GetWifiSignalStrength()
{
int signalStrength = 0;
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface nic in nics)
{
if (nic.OperationalStatus == OperationalStatus.Up && nic.NetworkInterfaceType == NetworkInterfaceType.Wireless80211)
{
IPInterfaceProperties ipProperties = nic.GetIPProperties();
if (ipProperties != null)
{
IPv4InterfaceStatistics ipStats = nic.GetIPv4Statistics();
if (ipStats != null)
{
signalStrength = (int)ipStats.BytesReceived;
}
}
break;
}
}
return signalStrength;
}

public void UpdateSignalBars(int signalStrength)
{
if (signalStrength >= 80)
{
// Зеленые палочки
bar1.Fill = Brushes.Green;
bar2.Fill = Brushes.Green;
bar3.Fill = Brushes.Green;
bar4.Fill = Brushes.Green;
bar5.Fill = Brushes.Green;
}
else if (signalStrength >= 60)
{
// Желтые палочки
bar1.Fill = Brushes.Yellow;
bar2.Fill = Brushes.Yellow;
bar3.Fill = Brushes.Yellow;
bar4.Fill = Brushes.Yellow;
bar5.Fill = Brushes.Gray;
}
else if (signalStrength >= 40)
{
// Оранжевые палочки
bar1.Fill = Brushes.Orange;
bar2.Fill = Brushes.Orange;
bar3.Fill = Brushes.Orange;
bar4.Fill = Brushes.Gray;
bar5.Fill = Brushes.Gray;
}
else if (signalStrength >= 20)
{
// Красные палочки
bar1.Fill = Brushes.Red;
bar2.Fill = Brushes.Red;
bar3.Fill = Brushes.Gray;
bar4.Fill = Brushes.Gray;
bar5.Fill = Brushes.Gray;
}
else
{

bar1.Fill = Brushes.Gray;
bar2.Fill = Brushes.Gray;
bar3.Fill = Brushes.Gray;
bar4.Fill = Brushes.Gray;
bar5.Fill = Brushes.Gray;
}
}
Я делаю уровень сигнала интернета. Когда я запускаю ничего не отображается. Помогите!
Голосование за лучший ответ
3681 Просветленный (20323) 3 месяца назад
Твой код не отображает уровень сигнала, потому что ты используешь ipStats.BytesReceived как показатель. BytesReceived показывает количество полученных байтов, а не уровень сигнала Wi-Fi.
Тем более, получить уровень сигнала Wi-Fi напрямую средствами C# невозможно. Windows API не предоставляет такой информации.
Но можно попробовать сделать некоторые вещи:
Существуют библиотеки, которые предоставляют доступ к информации о Wi-Fi сетях, включая уровень сигнала. Например, можно попробовать Managed Wifi API. Хотя это и сложнее.

Можно воспользоваться командой netsh wlan show interfaces, чтобы получить информацию о Wi-Fi сети, включая уровень сигнала. Затем нужно будет распарсить вывод команды и извлечь нужную информацию.
 public int GetWifiSignalStrength() 
{
Process process = new Process();
process.StartInfo.FileName = "netsh";
process.StartInfo.Arguments = "wlan show interfaces";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.Start();

string output = process.StandardOutput.ReadToEnd();
process.WaitForExit();

// Парсинг вывода команды и извлечение уровня сигнала
// ...
}
*Может работать не на всех версиях Windows.

Ещё Windows Management Instrumentation (WMI) предоставляет доступ к различной информации о системе, включая информацию о Wi-Fi. Можно использовать WMI для получения уровня сигнала Wi-Fi.
 using System.Management; 

public int GetWifiSignalStrength()
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher(
"select * from MSNdis_80211_ReceivedSignalStrengthIndication where active=true"
);

foreach (ManagementObject obj in searcher.Get())
{
return Convert.ToInt32(obj["Ndis80211ReceivedSignalStrength"]);
}

return -1; // Уровень сигнала не найден
}
*Нужен запуск приложения с повышенными привилегиями.
Похожие вопросы