C# 如何使用WMI从WPF应用程序获取电池充电状态?
我正在尝试获取充电百分比,与Windows显示的文本完全相同-不充电、完全充电、充电 我正在使用wmi查询 我不想硬编码那些文本,因为它每次的工作方式都不一样。 有时它显示95%——不充电,或者可以充电 有没有办法得到结果文本 我能做的,只是检查它是否100%充电,显示完全充电 但对于96%的用户来说,它的工作方式不同,有时Windows显示屏收费,有时不收费使用该类:C# 如何使用WMI从WPF应用程序获取电池充电状态?,c#,.net,wpf,wmi-query,C#,.net,Wpf,Wmi Query,我正在尝试获取充电百分比,与Windows显示的文本完全相同-不充电、完全充电、充电 我正在使用wmi查询 我不想硬编码那些文本,因为它每次的工作方式都不一样。 有时它显示95%——不充电,或者可以充电 有没有办法得到结果文本 我能做的,只是检查它是否100%充电,显示完全充电 但对于96%的用户来说,它的工作方式不同,有时Windows显示屏收费,有时不收费使用该类: 我知道这是一个老问题,但是获取电池信息而不是使用查询的另一种方法是使用ManagementClass。这里有一些代码可以获取电
我知道这是一个老问题,但是获取电池信息而不是使用查询的另一种方法是使用ManagementClass。这里有一些代码可以获取电池状态(完全充电、放电等),还有一些代码可以获取估计的剩余电池百分比
public enum BatteryStatus : ushort
{
Discharging = 1,
AcConnected,
FullyCharged,
Low,
Critical,
Charging,
ChargingAndHigh,
ChargingAndLow,
ChargingAndCritical,
Undefined,
PartiallyCharged
}
//
///获取电池状态。
///
///
公共静态BatteryStatus GetBatteryStatus()
{
ManagementClass wmi=新的ManagementClass(“Win32_电池”);
ManagementObjectCollection AllBatters=wmi.GetInstances();
电池状态=电池状态未定义;
foreach(所有电池中的var电池)
{
PropertyData pData=电池。属性[“电池状态”];
if(pData!=null&&pData.Value!=null&&Enum.IsDefined(typeof(BatteryStatus),pData.Value))
{
状态=(电池状态)pData.Value;
}
}
返回状态;
}
您可以使用以下方法获取剩余百分比
/// <summary>
/// Gets the percent of power remaining in the battery.
/// </summary>
/// <returns></returns>
public static double GetBatteryPercent()
{
ManagementClass wmi = new ManagementClass("Win32_Battery");
ManagementObjectCollection allBatteries = wmi.GetInstances();
double batteryLevel = 0;
foreach (var battery in allBatteries)
{
batteryLevel = Convert.ToDouble(battery["EstimatedChargeRemaining"]);
}
return batteryLevel;
}
//
///获取电池剩余电量的百分比。
///
///
公共静态双GetBatteryPercent()
{
ManagementClass wmi=新的ManagementClass(“Win32_电池”);
ManagementObjectCollection AllBatters=wmi.GetInstances();
双电池电平=0;
foreach(所有电池中的var电池)
{
batteryLevel=Convert.ToDouble(电池[“估计充电维护]);
}
返回电池级;
}
/// <summary>
/// Gets the battery status.
/// </summary>
/// <returns></returns>
public static BatteryStatus GetBatteryStatus()
{
ManagementClass wmi = new ManagementClass("Win32_Battery");
ManagementObjectCollection allBatteries = wmi.GetInstances();
BatteryStatus status = BatteryStatus.Undefined;
foreach (var battery in allBatteries)
{
PropertyData pData = battery.Properties["BatteryStatus"];
if (pData != null && pData.Value != null && Enum.IsDefined(typeof(BatteryStatus), pData.Value))
{
status = (BatteryStatus)pData.Value;
}
}
return status;
}
/// <summary>
/// Gets the percent of power remaining in the battery.
/// </summary>
/// <returns></returns>
public static double GetBatteryPercent()
{
ManagementClass wmi = new ManagementClass("Win32_Battery");
ManagementObjectCollection allBatteries = wmi.GetInstances();
double batteryLevel = 0;
foreach (var battery in allBatteries)
{
batteryLevel = Convert.ToDouble(battery["EstimatedChargeRemaining"]);
}
return batteryLevel;
}