Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不使用WMI获取电池信息_C#_Power Management - Fatal编程技术网

C# 不使用WMI获取电池信息

C# 不使用WMI获取电池信息,c#,power-management,C#,Power Management,有没有办法在没有WMI的情况下获得电池设计容量和满充电率? WMI不支持此值,因此我需要找到其他方法来获取它们 或者,也许有人有更好(更容易)的办法来计算C#中电池的磨损程度 顺便说一句 我尝试这样使用它,但只是返回null ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT DesignCapacity FROM Win32_Battery"); foreach (ManagementO

有没有办法在没有WMI的情况下获得电池设计容量和满充电率? 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";
}

感谢

要获得这些特定值,您需要对不同的类执行单独的查询,而不是win32_电池

DesignCapacity
可从BatteryStaticData查询

FullChargeCacity
可从电池fullchargedcapacity查询

您还需要在代码中为查询使用不同的作用域。这些类位于
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);
        }
    }
}

下载WMI资源管理器以运行和测试WMI查询,以便您知道信息可用:WMI的意义在于您不必亲自与BIOS对话。你不想做的事。拥有未实现的WMI属性和方法并不少见,您必须从机器制造商处获得更新的WMI提供程序。如果可用,通常不是。所以没有其他方法获取此数据?如果WMI不支持此属性,并且机器制造商不提供任何WMI更新,那么获取此类数据的其他方法是什么?我想知道windows batter状态是如何工作的(状态托盘中的东西)。它不使用WMI吗?如果没有,它使用什么?(它也不会“与BIO对话”)如果它使用WMI,为什么不能复制?我已经找到了一件事可以解决我的所有问题,但定价说服我再次搜索:)所以问题仍然存在,如何从系统中获取此值??