首页
学习
活动
专区
圈层
工具
发布

电池级c#
EN

Stack Overflow用户
提问于 2013-09-18 07:13:20
回答 1查看 2K关注 0票数 6

我有一个方法来确定电池的水平,并保持一个计时器,以定期检查电池的水平。

代码语言:javascript
复制
   void GetBatteryLevel()
    {
        try
        {
            //Use this code in next build
            //System.Windows.Forms.PowerStatus status = System.Windows.Forms.SystemInformation.PowerStatus;

            double batteryLevel;
            ManagementObjectSearcher mos = new ManagementObjectSearcher("select EstimatedChargeRemaining from Win32_Battery");
            ManagementObjectCollection collection = mos.Get();
            foreach (ManagementObject mo in collection)
            {
                UInt16 remainingPercent = (UInt16)mo["EstimatedChargeRemaining"];
                batteryLevel            = (double)remainingPercent;
                batteryLevel            = batteryLevel / 100;
                batteryLevel            = 1.0 - batteryLevel;
                BatteryLevel            = new System.Windows.Point(0.0, batteryLevel);
            }
        }
        catch (Exception exp)
        {
            Logger.LogMessage("EXCEPTION: " + exp.StackTrace);
        }
    }

当电池电量下降或增加1%时,是否有办法登记事件?我已经注册了SystemEvents.PowerModeChanged,这很好。

EN

回答 1

Stack Overflow用户

发布于 2013-09-18 15:55:29

简短的答案来自.Net基类库no。

尽管如此,仍有可用的电源事件,但这些事件位于kernel32中。微软确实试图在SystemEvents类中为您提供一些这些事件的挂钩,但不幸的是,它们并没有绑定到所有这些事件中。看看电源管理API,没有一个事件可以以你想要的方式追踪电池。

电源事件: http://msdn.microsoft.com/en-us/library/windows/desktop/aa373162(v=vs.85).aspx

Power有一个名为GetSystemPowerStatus的方法,它将为您提供所需的信息。如果您对从C++内部使用.Net有一定的了解,您可以查询电池信息,并且当电池信息发生变化时触发您自己的事件。

GetSystemPowerStatus: http://msdn.microsoft.com/en-us/library/windows/desktop/aa372693(v=vs.85).aspx

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18865979

复制
相关文章

相似问题

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