You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Windows显示的电池充满剩余时间?含代码及PowerShell方案

获取Windows电池剩余时间(放电/充满)

.NET 代码实现(以C#为例)

放电剩余时间

你可以直接使用System.Windows.Forms.PowerStatus类的BatteryLifeRemaining属性,返回值为秒数,若返回-1表示系统无法估计剩余时间:

using System.Windows.Forms;

var powerStatus = SystemInformation.PowerStatus;
int dischargeRemainingSeconds = powerStatus.BatteryLifeRemaining;
// 转换为分钟
int dischargeRemainingMinutes = dischargeRemainingSeconds / 60;

充满剩余时间(与Windows显示一致)

PowerStatus类没有直接提供该属性,需通过WMI的Win32_Battery类获取ChargingTime属性,该值为分钟数,仅当电池处于充电状态时有效;若返回0xFFFFFFFF(即uint.MaxValue),表示系统无法估计充满剩余时间:

using System.Management;

uint chargingRemainingMinutes = 0;
using (var searcher = new ManagementObjectSearcher("SELECT ChargingTime FROM Win32_Battery"))
{
    foreach (var battery in searcher.Get())
    {
        chargingRemainingMinutes = (uint)battery["ChargingTime"];
        break; // 取第一个电池设备
    }
}

// 处理无法估计的情况
if (chargingRemainingMinutes == uint.MaxValue)
{
    Console.WriteLine("无法估计充满剩余时间");
}
else
{
    Console.WriteLine($"充满剩余时间:{chargingRemainingMinutes} 分钟");
}

注意:使用WMI需要引用System.Management程序集,且需确保程序有足够权限读取硬件信息。

PowerShell 实现

放电剩余时间

通过Get-CimInstance获取Win32_Battery的EstimatedRunTime属性,返回值为分钟数,0表示无法估计:

$battery = Get-CimInstance Win32_Battery
$dischargeRemainingMinutes = $battery.EstimatedRunTime
if ($dischargeRemainingMinutes -eq 0) {
    Write-Host "无法估计放电剩余时间"
} else {
    Write-Host "放电剩余时间:$dischargeRemainingMinutes 分钟"
}

充满剩余时间

同样使用Win32_Battery的ChargingTime属性,返回分钟数,4294967295(即uint.MaxValue)表示无法估计:

$battery = Get-CimInstance Win32_Battery
$chargingRemainingMinutes = $battery.ChargingTime
if ($chargingRemainingMinutes -eq 4294967295) {
    Write-Host "无法估计充满剩余时间"
} else {
    Write-Host "充满剩余时间:$chargingRemainingMinutes 分钟"
}

补充说明:部分笔记本可能存在多个电池设备,若需遍历所有电池,可去掉代码中的break或循环处理$battery集合。

内容的提问来源于stack exchange,提问作者Boris Tashev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 04:22:16