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

Posted

技术标签:

【中文标题】如何检查系统上是不是存在电池,然后在 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如何检查系统上是否存在电池,然后在 C# 中为我的 WPF 应用程序获取电池百分比 【发布时间】:2020-01-08 07:28:51 【问题描述】:

我想检查系统是否有电池,然后获取电池剩余百分比。我不确定如何检查电池是否存在,但这是我试图获取电池剩余百分比的代码由于该代码仅返回 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】:

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

根据您的描述,在阅读您的代码后,我假设您要么有 0 节电池,要么有多个电池,allBatteries 集合中的最后一个电池的级别为 0%,因此返回值。仔细查看您的代码 - 您遍历 allBatteries 中的所有对象,但只将最后一个作为返回值。

你能做的是

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

【讨论】:

很高兴听到这个消息。

以上是关于如何检查系统上是不是存在电池,然后在 C# 中为我的 WPF 应用程序获取电池百分比的主要内容,如果未能解决你的问题,请参考以下文章

如何从 C# 或 Javascript 检查文件是不是存在?

如何在 C# 中为我的控件添加移动效果?

如何检查在 C# 的全局类中找到的数组中是不是存在对象

如何以编程方式检查手机当前是不是正在充电或正在使用电池?

C# - 如何检查 C# 中是不是存在命名空间、类或方法?

如何在 Linux 终端下检查笔记本电池状态