Твой код не отображает уровень сигнала, потому что ты используешь 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; // Уровень сигнала не найден
}
*Нужен запуск приложения с повышенными привилегиями.