#region Imports using System; using System.ComponentModel; using System.Diagnostics; using System.Windows.Forms; #endregion namespace DPumpHydr.WinFrmUI.RLT.Controls { #region ParrotWiFiPercentage public class ParrotWiFiPercentage : Timer { public ParrotWiFiPercentage() { Enabled = true; base.Interval = 3000; backgroundThread.DoWork += BackgroundThread_DoWork; backgroundThread.RunWorkerAsync(); } private void BackgroundThread_DoWork(object sender, DoWorkEventArgs e) { if (backgroundThread.IsBusy) { Process process = new() { StartInfo = new ProcessStartInfo { WindowStyle = ProcessWindowStyle.Hidden, CreateNoWindow = true, UseShellExecute = false, RedirectStandardOutput = true, FileName = "cmd.exe", Arguments = "/C \"@echo off && for /f \"tokens=3 delims= \" %a in ('netsh wlan show interfaces ^| findstr /r \" ^....SSID\"') do echo %a && for /f \"tokens=3 delims= \" %a in ('netsh wlan show interfaces ^| findstr /r \" ^....Signal\"') do echo %a\"" } }; process.Start(); SSID = "Not connected"; int percentage = 0; try { string[] array = process.StandardOutput.ReadToEnd().Split(new char[] { ' ' }); SSID = array[0]; percentage = int.Parse(array[1].Remove(0, 2).Replace("%", "")); process.WaitForExit(); } catch { } Value = percentage; } } [Category("Parrot")] [Browsable(true)] [Description("Returns the wifi percentage")] public int Value { get; private set; } = 100; [Category("Parrot")] [Browsable(true)] [Description("Returns the SSID")] public string SSID { get; private set; } = "Not connected"; protected override void OnTick(EventArgs e) { base.OnTick(e); backgroundThread.RunWorkerAsync(); } private readonly BackgroundWorker backgroundThread = new(); } #endregion }