Win CE 5.0 增加电池电量显示
摘自 http://blog.csdn.net/li0531/article/details/8818243
同时只在右上角显示一个 Label 控件,因此代码量精简了很多。
[DllImport("coredll")] private static extern int GetSystemPowerStatusEx(SYSTEM_POWER_STATUS_EX lpSystemPowerStatus, bool fUpdate); [DllImport("coredll")] public static extern void SystemIdleTimerReset(); private SYSTEM_POWER_STATUS_EX status = new SYSTEM_POWER_STATUS_EX(); /// <summary> ///// 是否充电状态 ///// </summary> //private State AState = State.Normal; /// <summary> /// 电池当前状态 Charge:充电中;UnderCharge:电量不足;Normal:电池正常使用. /// </summary> public enum State { /// <summary> /// 充电中 /// </summary> Charge, /// <summary> /// 充电不足 /// </summary> UnderCharge, /// <summary> /// 正常状态 /// </summary> Normal, /// <summary> /// 充电完成 /// </summary> ChargeFinally }; private class SYSTEM_POWER_STATUS_EX { public byte ACLineStatus = 0; public byte BatteryFlag = 0; public byte BatteryLifePercent = 0; public byte Reserved1 = 0; public uint BatteryLifeTime = 0; public uint BatteryFullLifeTime = 0; public byte Reserved2 = 0; public byte BackupBatteryFlag = 0; public byte BackupBatteryLifePercent = 0; public byte Reserved3 = 0; public uint BackupBatteryLifeTime = 0; public uint BackupBatteryFullLifeTime = 0; } /// <summary> /// 创建电源指示 /// </summary> private void GetBatteryState() { if (GetSystemPowerStatusEx(status, false) == 1) { if (status.BatteryLifePercent >= 95) { labBattery.Text = "100"; labBattery.ForeColor = Color.Green; } else if (status.BatteryLifePercent <= 20) { if (status.ACLineStatus == 1) labBattery.Text = status.BatteryLifePercent.ToString() + " +"; else labBattery.Text = "! " + status.BatteryLifePercent.ToString(); labBattery.ForeColor = Color.Red; } else { labBattery.Text = status.BatteryLifePercent.ToString() + (status.ACLineStatus == 1 ? " +" : ""); labBattery.ForeColor = Color.Blue; } } }
我是在 Timer 控件下以 10m 的频率调用这个方法的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!