【问题标题】:Which method do I use for finding battery percentage in C#?我使用哪种方法在 C# 中查找电池百分比?
【发布时间】:2017-09-02 11:27:32
【问题描述】:

最近我一直在制作一个程序,可以找出用户计算机的电池百分比。我正在尝试找出使用哪种方法。我已经看到有两种方法,例如:

PowerStatus powerStatus = SystemInformation.PowerStatus;
if (powerStatus.BatteryLifePercent < 0.1)
{
    MessageBox.Show("Battery is at 10%");
}

ManagementClass wmi = new ManagementClass("Win32_Battery");
var allBatteries = wmi.GetInstances();
foreach (var battery in allBatteries)
{
    int batteryLevel = Convert.ToInt32(battery["EstimatedChargeRemaining"]);
    if (batteryLevel < 10)
    {
        MessageBox.Show("Battery is at 10%");
    }

我不确定使用哪种方法。

【问题讨论】:

  • This 可以帮助你
  • 感谢您的 ++

标签: c#


【解决方案1】:

我已经在我的 MSI 笔记本电脑上测试了这两个代码。第一个返回 1% 的电池寿命百分比。

两者都有效,因为 cmets 波纹管(谢谢顺便说一句)第一个返回一个浮点数。所以 1 将是 100%.. 和 0.1 10%..

使用 ManagementClass,我得到了正确的结果,100%。

我确实更喜欢有时使用管理类。 PowerStatus 也仅在 System.Windows.Forms 命名空间中。

【讨论】:

  • 你确定它不会像 100% 那样返回 1 吗?请参阅文档 - 此方法返回一个浮点数,因此 1 为 100%。如果这是真的,这是一个糟糕的测试,很可能是一个糟糕的答案......msdn.microsoft.com/en-us/library/…
  • 同意,我没有注意到这一点。 tks
【解决方案2】:

两种方法都可以,但是请注意PowerStatus.BatteryLifePercent 返回的值是float[0..1.0f] 范围内。 所以PowerStatus版本应该是

if (SystemInformation.PowerStatus.BatteryLifePercent < 0.1) // 0.1 == 10%
  MessageBox.Show("Battery is at 10%");

https://msdn.microsoft.com/en-us/library/system.windows.forms.powerstatus.batterylifepercent(v=vs.110).aspx

了解详情

【讨论】:

  • 抱歉,我将编辑我的答案。不过还是谢谢你的回答。
  • 没错。这就是为什么@ThiagoLoureiro 的回答可能不正确的原因。这个答案虽然是一个很好的问题,也是一个重要的评论,但仍然不是问题的答案。答案应该比较这两种方法并解释它们的不同之处。
猜你喜欢
  • 2023-04-07
  • 2012-02-15
  • 1970-01-01
  • 1970-01-01
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多