2011-03-24 99 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