Dictionary<uint16,> StatusCodes;private void Form1_Load(object sender, EventArgs e)
{
StatusCodes = new Dictionary<ushort,>();
StatusCodes.Add(1, "The battery is discharging");
StatusCodes.Add(2, "The system has access to AC so no battery is being discharged. However, the battery is not necessarily charging");
StatusCodes.Add(3, "Fully Charged");
StatusCodes.Add(4, "Low");
StatusCodes.Add(5, "Critical");
StatusCodes.Add(6, "Charging");
StatusCodes.Add(7, "Charging and High");
StatusCodes.Add(8, "Charging and Low");
StatusCodes.Add(9, "Undefined");
StatusCodes.Add(10,"Partially Charged");progressBar1.Maximum = 100;
progressBar1.Style = ProgressBarStyle.Continuous;
timer1.Enabled = true;
ManagementObjectSearcher mos = new ManagementObjectSearcher("select * from Win32_Battery");foreach (ManagementObject mo in mos.Get())
{
lblBatteryName.Text = mo["Name"].ToString();
UInt16 statuscode = (UInt16)mo["BatteryStatus"];string statusString = StatusCodes[statuscode];
lblBatteryStatus.Text = statusString;
}
}private void timer1_Tick(object sender, EventArgs e)
{
ManagementObjectSearcher mos = new ManagementObjectSearcher("select * from Win32_Battery where Name='"+lblBatteryName.Text+"'");foreach (ManagementObject mo in mos.Get())
{
UInt16 statuscode = (UInt16)mo["BatteryStatus"];string statusString = StatusCodes[statuscode];
lblBatteryStatus.Text = statusString;if (statuscode == 4)
{
progressBar1.ForeColor = Color.Red;
progressBar1.Value = 5;
}else if (statuscode == 3)
{
progressBar1.ForeColor = Color.Blue;
progressBar1.Value = 100;
}else if (statuscode == 2)
{
progressBar1.ForeColor = Color.Green;
progressBar1.Value = 100;
}else if (statuscode == 5)
{
progressBar1.ForeColor = Color.Red;
progressBar1.Value = 1;
}else if (statuscode == 6)
{
progressBar1.ForeColor = Color.Blue;
progressBar1.Value = 100;
}
}
}