检查Windows Mobile 6.5中的电池状态

时间:2016-02-17 06:12:14

标签: vb.net windows-mobile-6.5

我正在使用Visual Studio 2005中的VB.NET windows移动应用程序。 我想查看我的设备电池电量,所以我给代码加载了这样的表格:

Imports System.IO 
Imports System.Data 
Imports System.Drawing.Imaging 
Imports System.Configuration 
Imports Microsoft.Win32 
Imports System.Windows.Forms 
Imports Microsoft.VisualBasic 
Imports System 

Dim power As SystemInformation.PowerStatus = SystemInformation.PowerStatus
Dim percent As Single = power.BatteryLifePercent
MsgBox("Percent battery life remaining: " & percent * 100)

但显示错误

  

未定义SystemInformation.PowerStatus。

任何人都告诉我如何解决这个问题

2 个答案:

答案 0 :(得分:0)

忘记那些谈论VS2015的人。这与在Windows移动设备上运行的紧凑型框架无关!

你需要使用状态和通知api:在c#中这是

using Microsoft.WindowsMobile.Status; // see https://msdn.microsoft.com/en-us/library/microsoft.windowsmobile.status.aspx
...
BatteryLevel batteryLevel = SystemState.PowerBatteryStrength;
BatteryState batteryState = SystemState.PowerBatteryState;

确保您使用目标Windows Mobile 6.x!和comapct框架3.5

另一种方法是使用P / Invoke和GetSystemPowerStatusEx。 见How do you get the current battery level in .NET CF 3.5?

如果您没有安装并定位至少Windows Mobile 6 SDK,则在添加引用中不会看到Microsoft.WindowsMo​​bile.Status。

如果您想继续使用PPC2003,则需要使用P / Invoke for GetSystemPowerStatusEx。

如果您理解这一点,

Here是获取电池状态的好方法。还有很多其他网站,不要懒惰,并使用你的互联网搜索引擎。

很抱歉,但是当MS重命名SDK并重新排列网站而不查看现有链接时,即使在页面和搜索结果上,我也无法找到适用于Windows Mobile 6.5的Developer Toolkit(DTK)已重命名为Windows Embedded Handheld 6.5)。

答案 1 :(得分:-1)

PowerStatus用于声明System.Windows.Forms的变量部分的类型,而不是SystemInformation。这条线

Dim power As SystemInformation.PowerStatus = SystemInformation.PowerStatus

需要更改为:

Dim power As System.Windows.Forms.PowerStatus = SystemInformation.PowerStatus

这对我有用(我在Visual Studio 2013中,但这不应该有所作为。)

Private Sub ShowBatteryPercent()
    Dim power As System.Windows.Forms.PowerStatus = SystemInformation.PowerStatus
    Dim percent As Single = power.BatteryLifePercent
    MsgBox("Percent battery life remaining: " & percent * 100)
End Sub

必须确保您拥有Imports System.Windows.Forms