如何检查系统上是不是存在电池,然后在 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 应用程序获取电池百分比的主要内容,如果未能解决你的问题,请参考以下文章