2011-03-24 78 views
1

先生,我正在开发运行WINDOWS CE 5.0的设备的应用程序。我想知道设备的电池/电量信息。我在CE编程中退出了新局面。请说明Windows Mobile编程和CE编程有什么区别?我发现要使用MICROSOFT.WINDOWSMOBILE.STATUS命名空间。但是当我包含引用时,该名称空间在列表中不可见。我该怎么办?获取Windows CE 5.0设备的电池信息

回答

0

我之前使用过P/Invoke GetSystemPowerStatusEx,发现它经常调用时会导致内存泄漏。要获得可靠的事件驱动电池状态,我需要遵循SystemState Events的路线。

using Microsoft.WindowsMobile.Status; 
_batteryState = new SystemState(SystemProperty.PowerBatteryState) { ComparisonType = StatusComparisonType.AnyChange }; 
_batteryState.Changed += (o, e) => UpdateBatteryIcon(); 

private void UpdateBatteryIcon() 
{ 
    var batteryLevel = SystemState.PowerBatteryStrength; 
    var isOnCharge = IsOnCharge(SystemState.PowerBatteryState); 
    _batteryWarning = batteryLevel == BatteryLevel.VeryLow && !isOnCharge; 
    pictBattery.Image = GetBatteryIcon(batteryLevel, isOnCharge); 
} 
+0

P/Invoking只会导致泄漏,如果你做错了。如果操作系统支持它,系统状态会很好,但是我不相信它可以在他的通用CE 5.0设备上工作,因为Microsoft.WindowsMo​​bile.dll程序集不会在设备上。 – ctacke 2011-03-24 16:39:29

+0

当我们开发针对Windows CE设备的应用程序时,Microsoft.WindowsMo​​bile.Status dll无法添加到添加列表中。相反,如果目标是Windows Mobile,它是可用的。 – himanshu 2011-03-25 04:40:48