在没有WMI的情况下获取电池信

时间:2011-04-19 12:46:22

标签: c# power-management

有没有办法在没有WMI的情况下获得电池DesignCapacity和FullChargeCpacity? WMI不支持此值,因此我需要找到其他方法来获取它们。

或许有人有更好(更容易)的想法来获得C#中的电池磨损水平?

顺便说一句 我尝试以这种方式使用它,但只返回null

ManagementObjectSearcher query = 
        new ManagementObjectSearcher("SELECT DesignCapacity FROM Win32_Battery");

foreach (ManagementObject queryObj in query.Get())
{
    string dc = Convert.ToString(queryObj.GetPropertyValue("DesignCapacity"));
    label1.Text = dc + " mAh";
}

由于

1 个答案:

答案 0 :(得分:1)

要获取这些特定值,您需要针对不同的类而不是win32_battery执行单独的查询。

可以从BatteryStaticData

查询

DesignCapacity 可以从BatteryFullChargedCapacity

查询

FullChargeCacity

您还需要在代码中使用不同的范围来进行查询。这些类位于root/WMI而不是root/cimv2

string scope = "root/WMI";
string query = "SELECT DesignedCapacity FROM BatteryStaticData";

ManagementObjectSearcher batteriesQuery = new ManagementObjectSearcher(scope, query);

ManagementObjectCollection batteries = batteriesQuery.Get();

foreach (ManagementObject battery in batteries)
{
    if (battery != null)
    {
        foreach (var property in battery.Properties)
        {
            Console.Log("Property name: " + property.Name + " Property value: " + property.Value);
        }
    }
}