如何检查系统上是否存在电池,然后在 C# 中为我的 WPF 应用程序获取电池百分比

How do I check if a battery exists on the system and then get the battery percentage in C# for my WPF application

我想检查系统是否有电池,然后获取电池剩余百分比。我不确定如何检查电池是否存在,但这是我试图获取电池剩余百分比的代码 这不起作用,因为代码仅 returns 0:

    public 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;
    }

此外,我在 windows 7 上使用 visual studio 2015 是否可能是导致此问题的潜在问题?

我希望您在确实有电池的系统上测试您的代码。在 运行 执行此代码后,我看到我的系统有 1 个电池并且 batteryLevel 变量设置为 Windows 报告的百分比。

根据您的描述,在阅读您的代码后,我假设您有 0 块电池或多块电池,并且 allBatteries 集合中的最后一块电池的电量为 0%,因此return 值。仔细查看您的代码 - 您遍历了 allBatteries 中的所有对象,但只将最后一个对象作为 return 值。

你能做的是

  • 将初始 batteryLevel 设置为 -1,以便您知道 allBatteries 上的循环是否为 运行(即 allBatteries 有任何项目)
  • return 一个可以为空的电池电量数组 - 如果为空则表示没有安装电池,否则您可以计算平均值以获得实际电池电量
  • 更好 - return 电池电量和电池容量的可为 null 的字典,因此稍后您可以计算所有电池电量的加权平均值(对于与上述相同的指示为 null)