首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用WMI从WPF中获取电池充电状态?

如何利用WMI从WPF中获取电池充电状态?
EN

Stack Overflow用户
提问于 2011-11-21 09:13:53
回答 2查看 3.1K关注 0票数 1

我正试着获得充电百分比,和Windows显示的完全相同的文本--不充电,完全充电,充电

我在使用wmi查询。

我不想硬编码那些短信,因为每次都会有不同的效果。有时它显示95 %-没有充电,或可以充电。

有什么方法可以得到结果短信吗?

我能做的,只是检查它是否100 %充电,显示完全充电。

但是对于96 %的用户来说,它的工作方式是不同的,有时是Windows显示器充电,有时是不充电

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-21 10:03:58

使用电池类:

代码语言:javascript
复制
static string GetBatteryStatus() {
    ManagementScope scope = new ManagementScope("//./root/cimv2");
    SelectQuery query = new SelectQuery("Select BatteryStatus From Win32_Battery");
    using(ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query)) {
        using(ManagementObjectCollection objectCollection = searcher.Get()) {
            foreach(ManagementObject mObj in objectCollection) {
                PropertyData pData = mObj.Properties["BatteryStatus"];
                switch((Int16)pData.Value) { 
                    //...
                    case 2:return "Not Charging";
                    case 3:return "Fully Charged";
                    case 4:return "Low";
                    case 5: return "Critical";
                    //...
                }
            }
        }
    }
    return string.Empty;
}
票数 1
EN

Stack Overflow用户

发布于 2015-08-27 14:37:04

我知道这是一个老问题,但另一种获取电池信息而不是使用查询的方法是使用ManagementClass。这是一些获得电池状态的代码(FullyCharged,放电等)和一些代码,以得到估计的剩余电池百分比。

代码语言:javascript
复制
public enum BatteryStatus : ushort
{
    Discharging = 1,
    AcConnected,
    FullyCharged,
    Low,
    Critical,
    Charging,
    ChargingAndHigh,
    ChargingAndLow,
    ChargingAndCritical,
    Undefined,
    PartiallyCharged
}

..。

代码语言:javascript
复制
    /// <summary>
    /// Gets the battery status.
    /// </summary>
    /// <returns></returns>
    public static BatteryStatus GetBatteryStatus()
    {
        ManagementClass wmi = new ManagementClass("Win32_Battery");
        ManagementObjectCollection allBatteries = wmi.GetInstances();
        BatteryStatus status = BatteryStatus.Undefined;

        foreach (var battery in allBatteries)
        {
            PropertyData pData = battery.Properties["BatteryStatus"];

            if (pData != null && pData.Value != null && Enum.IsDefined(typeof(BatteryStatus), pData.Value))
            {
                status = (BatteryStatus)pData.Value;
            }
        }

        return status;
    }

您可以使用以下方法获得剩余的百分比。

代码语言:javascript
复制
    /// <summary>
    /// Gets the percent of power remaining in the battery.
    /// </summary>
    /// <returns></returns>
    public static 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;
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8209522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档