Windows mobile 如何判断windows mobile设备是否使用VB.Net连接到外部电源?

Windows mobile 如何判断windows mobile设备是否使用VB.Net连接到外部电源?,windows-mobile,Windows Mobile,当设备使用电池电源或外部电源时,Windows Mobile设备具有不同的挂起行为 在我用VB.net编写的应用程序中,我需要能够确定设备是否连接了外部电源 是否有从Compact framework获取此状态的方法?如果您仅使用WIndowsMobile 5.0及更高版本,请查看,特别是 if (SystemState.PowerBatteryState & BatteryState.Charging) ... 为了获得更广泛的支持,您可以使用已应用的NOTIFICATION_eve

当设备使用电池电源或外部电源时,Windows Mobile设备具有不同的挂起行为

在我用VB.net编写的应用程序中,我需要能够确定设备是否连接了外部电源


是否有从Compact framework获取此状态的方法?

如果您仅使用WIndowsMobile 5.0及更高版本,请查看,特别是

if (SystemState.PowerBatteryState & BatteryState.Charging) ...
为了获得更广泛的支持,您可以使用已应用的NOTIFICATION_event_AC_或已删除的NOTIFICATION_event_AC_事件代码检测状态转换(到交流电源或从交流电源)调用(这可以设置命名事件,而不仅仅是运行应用程序)。这正是中的所做的


您可以通过调用来检测当前状态(而不是转换)。

这可能超出了您的要求,但我在Windows Mobile Powermanagement API上写了一些东西。它使用的API与Chris刚才引用的相同,但面向.Net(抱歉,它是C#,而不是VB.Net)


首先,通过将其复制到代码(模块或类)中来实现所有这些:

然后:

公共函数isOnCharge()为布尔值
Dim状态为新系统\u电源\u状态\u EX2
GetSystemPowerStatuse2(状态,Convert.ToUInt32(Marshal.SizeOf(状态)),True)
如果status.BatteryCurrent<10000,则
返回true“已插入”
否则返回false“未拔出”
如果结束
端函数
我这样做是因为SystemState.PowerBatteryState和BatteryState.Charging的示例不起作用,所以我设法用另一种方法使其起作用


如果我的设备已插上电源,status.batteryCurrent小于10000,但如果未插上电源,其值将超过4000000。如果你想得到更精确的值,你可以在你的电脑上做一些测试。干杯

当它充满电但仍然接通电源后,它还能工作吗?
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