如何检索双电池状态?

5
 Dim power As PowerStatus = SystemInformation.PowerStatus
 Dim percent As Single = power.BatteryLifePercent

或者

PowerStatus power = SystemInformation.PowerStatus;
float percent = power.BatteryLifePercent;

我希望你能提供一个VB的答案,因为应用程序是用VB编写的,但如果你不知道VB,可以转换成C#。

我知道上面的代码可以给我剩余电量百分比 - 但我有一台平板电脑,它是“热插拔”的(它有一个主电池,然后是一个小的5分钟电池,在您更换电池时运行平板电脑) - 我怎么找到第二个电池的状态?

我正在寻找类似于SystemInformation.PowerStatus(0)的东西,但我不知道我实际上要找什么,我一定是在谷歌上遇到了障碍,因为我找不到任何东西。


如果没有托管访问权限,则可以使用 WMI Win32_Battery 类来获取此信息。 - Damien_The_Unbeliever
请查看网页http://www.csharpdeveloping.net/Snippet/how_to_enumerate_batteries_using_wmi。它提供了有关使用WMI枚举电池时可以获取的所有信息的完整列表。 - Dmitriy Finozhenok
2个回答

7
您可以使用WMI和Win32获取电池电量。
尝试以下操作:
ObjectQuery query = new ObjectQuery("Select * FROM Win32_Battery");

foreach (ManagementObject o in new ManagementObjectSearcher(query).Get())
{
    uint level = (uint)o.Properties["EstimatedChargeRemaining"].Value;
} 

1

如果有多个电池,您可以使用WMI。具体而言,Win32_Battery 类。但是,这比使用 PowerStatus 类要慢一些。


速度不是问题 - 我只会每隔2分钟轮询一次 - 只是我的应用程序全屏覆盖了状态! - GrahamTheDevRel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接