我正在尝试获取充电百分比,并且显示与Windows完全相同的文本-未充电,已充满电,正在充电

我正在使用wmi查询。

我不想对这些文本进行硬编码,因为每次都不同地工作。
有时会显示95%-不收费,或者可以收费。

有什么办法可以得到结果文本?

我所能做的,只是检查它是否已100%充电,才能显示“充满电”。

但是对于96%的用户,它的工作方式有所不同,有时Windows显示“已充电”或“未充电”

最佳答案

使用Win32_Battery类:

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;
}

10-08 13:53