Windows Mobile设备在设备使用电池供电或外接电源时具有不同的暂停行为。
在我的应用程序中,使用VB.net编写,我需要能够确定设备是否已连接外部电源。
是否有一种方法可以从Compact框架中获取此状态?
答案 0 :(得分:3)
如果您仅使用WIndowsMobile 5.0及更高版本,State and Notification Broker可以查看,特别是Status namespace。
为了获得更广泛的支持,您可以使用NOTIFICATION_EVENT_AC_APPLIED检测调用CeRunAppAtEvent(这可以设置命名事件而不是仅运行应用程序)的状态转换(来自或来自AC电源)或NOTIFICATION_EVENT_AC_REMOVED个事件代码。这就是DeviceManagement class中的Smart Device Framework所做的。
您可以通过调用GetSystemPowerStatusEx2来检测当前状态(而不是转换)。
答案 1 :(得分:1)
if (SystemState.PowerBatteryState & BatteryState.Charging) ...
答案 2 :(得分:1)
首先,通过将其复制到您的代码(模块或类)中来实现所有这些:https://msdn.microsoft.com/en-us/library/aa457088.aspx
然后:
Public Function isOnCharge() As Boolean
Dim status As New SYSTEM_POWER_STATUS_EX2
GetSystemPowerStatusEx2(status, Convert.ToUInt32(Marshal.SizeOf(status)), True)
If status.BatteryCurrent < 10000 Then
return true 'plugged in
else return false 'Unplugged
End If
End Function
我这样做是因为带有SystemState.PowerBatteryState&amp; BatteryState.Charging不起作用,所以我设法用另一种方法使它工作。
如果我的设备已插入,则status.batteryCurrent小于10000,但如果已拔下插头,则其值超过4000000.如果您想要更精确的值,可以对您的设备进行一些测试。干杯!
答案 3 :(得分:0)
这可能超出了您的要求,但我在Windows Mobile Powermanagement APIS上写了一些内容。它使用了Chris刚才引用的相同API,但是面向.Net(抱歉,它在C#中,而不是VB.Net)。