博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PDA Battery Info (VB.Net+.Net CF) Source Code
阅读量:6185 次
发布时间:2019-06-21

本文共 8313 字,大约阅读时间需要 27 分钟。

None.gif
'
====================================== 
None.gif'
   Get PDA Battery Info 
None.gif'
Summary: 
None.gif'
   Using P/Invoke to get Battery Info. 
None.gif'
This technique is introduced in MSDN 
None.gif'
Library - January 2005 and this program 
None.gif'
is written based on the sample program 
None.gif'
of ms-help://MS.MSDNQTR.2005JAN.1033/dncfhowto/html/getpowstat.htm 
None.gif'
Functions: 
None.gif'
   This program get PDA's battery info- 
None.gif'
mation containing main battery lifetime, 
None.gif'
voltage,current,and backup battery info. 
None.gif'
 
None.gif'
2005/3/17 
None.gif'
Hesicong 
None.gif'
http://dream-world.nease.net 
None.gif'
http://blog.csdn.net/hesicong 
None.gif'
mailto:hesicong@mail.sc.cninfo.net 
None.gif
 
None.gif
Imports
 System 
None.gif
Imports
 System.Drawing 
None.gif
Imports
 System.Collections 
None.gif
Imports
 System.Windows.Forms 
None.gif
Imports
 System.Data 
None.gif
Imports
 System.Runtime.InteropServices 
None.gif 
None.gif
'
 Summary description for Form1. 
ExpandedBlockStart.gifContractedBlock.gif
Public
 
Class BatteryInfo
Class BatteryInfo 
InBlock.gif    
Inherits System.Windows.Forms.Form 
InBlock.gif    
Friend WithEvents TextBox1 As System.Windows.Forms.TextBox 
InBlock.gif    
Private mainMenu1 As System.Windows.Forms.MainMenu 
InBlock.gif 
ExpandedSubBlockStart.gifContractedSubBlock.gif    
Public Sub New()Sub New() 
InBlock.gif        
' 
InBlock.gif
        ' Required for Windows Form Designer support 
InBlock.gif
        ' 
InBlock.gif
        InitializeComponent() 
ExpandedSubBlockEnd.gif    
End Sub
 'New 
InBlock.gif
 
InBlock.gif    
' 
InBlock.gif
    ' TODO: Add any constructor code after InitializeComponent call 
InBlock.gif
    ' 
InBlock.gif
    ' Clean up any resources being used. 
ExpandedSubBlockStart.gifContractedSubBlock.gif
    Protected Overloads Overrides Sub Dispose()Sub Dispose(ByVal disposing As Boolean
InBlock.gif        
MyBase.Dispose(disposing) 
ExpandedSubBlockEnd.gif    
End Sub
 'Dispose 
ExpandedSubBlockStart.gifContractedSubBlock.gif
Windows Form Designer generated code#Region "Windows Form Designer generated code" 
InBlock.gif 
InBlock.gif    
' Required method for Designer support - do not modify 
InBlock.gif
    ' the contents of this method with the code editor. 
InBlock.gif
    Friend WithEvents MenuItem4 As System.Windows.Forms.MenuItem 
InBlock.gif    
Friend WithEvents MenuItem5 As System.Windows.Forms.MenuItem 
InBlock.gif    
Friend WithEvents MenuItem7 As System.Windows.Forms.MenuItem 
InBlock.gif    
Friend WithEvents Timer1 As System.Windows.Forms.Timer 
InBlock.gif    
Friend WithEvents mnuAutoRefresh As System.Windows.Forms.MenuItem 
InBlock.gif    
Friend WithEvents mnuAbout As System.Windows.Forms.MenuItem 
InBlock.gif    
Friend WithEvents MenuItem1 As System.Windows.Forms.MenuItem 
ExpandedSubBlockStart.gifContractedSubBlock.gif    
Private Sub InitializeComponent()Sub InitializeComponent() 
InBlock.gif        
Me.mainMenu1 = New System.Windows.Forms.MainMenu 
InBlock.gif        
Me.MenuItem4 = New System.Windows.Forms.MenuItem 
InBlock.gif        
Me.MenuItem5 = New System.Windows.Forms.MenuItem 
InBlock.gif        
Me.mnuAutoRefresh = New System.Windows.Forms.MenuItem 
InBlock.gif        
Me.MenuItem7 = New System.Windows.Forms.MenuItem 
InBlock.gif        
Me.mnuAbout = New System.Windows.Forms.MenuItem 
InBlock.gif        
Me.TextBox1 = New System.Windows.Forms.TextBox 
InBlock.gif        
Me.Timer1 = New System.Windows.Forms.Timer 
InBlock.gif        
Me.MenuItem1 = New System.Windows.Forms.MenuItem 
InBlock.gif        
' 
InBlock.gif
        'mainMenu1 
InBlock.gif
        ' 
InBlock.gif
        Me.mainMenu1.MenuItems.Add(Me.MenuItem4) 
InBlock.gif        
Me.mainMenu1.MenuItems.Add(Me.mnuAbout) 
InBlock.gif        
' 
InBlock.gif
        'MenuItem4 
InBlock.gif
        ' 
InBlock.gif
        Me.MenuItem4.MenuItems.Add(Me.MenuItem5) 
InBlock.gif        
Me.MenuItem4.MenuItems.Add(Me.mnuAutoRefresh) 
InBlock.gif        
Me.MenuItem4.MenuItems.Add(Me.MenuItem1) 
InBlock.gif        
Me.MenuItem4.MenuItems.Add(Me.MenuItem7) 
InBlock.gif        
Me.MenuItem4.Text = "Menu" 
InBlock.gif        
' 
InBlock.gif
        'MenuItem5 
InBlock.gif
        ' 
InBlock.gif
        Me.MenuItem5.Text = "Refresh" 
InBlock.gif        
' 
InBlock.gif
        'mnuAutoRefresh 
InBlock.gif
        ' 
InBlock.gif
        Me.mnuAutoRefresh.Text = "AutoRefresh" 
InBlock.gif        
' 
InBlock.gif
        'MenuItem7 
InBlock.gif
        ' 
InBlock.gif
        Me.MenuItem7.Text = "End" 
InBlock.gif        
' 
InBlock.gif
        'mnuAbout 
InBlock.gif
        ' 
InBlock.gif
        Me.mnuAbout.Text = "About" 
InBlock.gif        
' 
InBlock.gif
        'TextBox1 
InBlock.gif
        ' 
InBlock.gif
        Me.TextBox1.Location = New System.Drawing.Point(88
InBlock.gif        
Me.TextBox1.Multiline = True 
InBlock.gif        
Me.TextBox1.ScrollBars = System.Windows.Forms.ScrollBars.Horizontal 
InBlock.gif        
Me.TextBox1.Size = New System.Drawing.Size(224256
InBlock.gif        
Me.TextBox1.Text = "" 
InBlock.gif        
' 
InBlock.gif
        'Timer1 
InBlock.gif
        ' 
InBlock.gif
        Me.Timer1.Interval = 1000 
InBlock.gif        
' 
InBlock.gif
        'MenuItem1 
InBlock.gif
        ' 
InBlock.gif
        Me.MenuItem1.Text = "SetRefreshInterval" 
InBlock.gif        
' 
InBlock.gif
        'BatteryInfo 
InBlock.gif
        ' 
InBlock.gif
        Me.Controls.Add(Me.TextBox1) 
InBlock.gif        
Me.Menu = Me.mainMenu1 
InBlock.gif        
Me.Text = "BatteryInfo" 
InBlock.gif 
ExpandedSubBlockEnd.gif    
End Sub
 'InitializeComponent 
InBlock.gif
 
ExpandedSubBlockEnd.gif
#End Region
 
InBlock.gif 
InBlock.gif    
' The main entry point for the application. 
ExpandedSubBlockStart.gifContractedSubBlock.gif
    Shared Sub Main()Sub Main() 
InBlock.gif        Application.Run(
New BatteryInfo) 
ExpandedSubBlockEnd.gif    
End Sub
 'Main 
InBlock.gif
 
ExpandedSubBlockStart.gifContractedSubBlock.gif    
Public Class SYSTEM_POWER_STATUS_EX2Class SYSTEM_POWER_STATUS_EX2 
InBlock.gif        
Public ACLineStatus As Byte 
InBlock.gif        
Public BatteryFlag As Byte 
InBlock.gif        
Public BatteryLifePercent As Byte 
InBlock.gif        
Public Reserved1 As Byte 
InBlock.gif        
Public BatteryLifeTime As System.UInt32 
InBlock.gif        
Public BatteryFullLifeTime As System.UInt32 
InBlock.gif        
Public Reserved2 As Byte 
InBlock.gif        
Public BackupBatteryFlag As Byte 
InBlock.gif        
Public BackupBatteryLifePercent As Byte 
InBlock.gif        
Public Reserved3 As Byte 
InBlock.gif        
Public BackupBatteryLifeTime As System.UInt32 
InBlock.gif        
Public BackupBatteryFullLifeTime As System.UInt32 
InBlock.gif        
Public BatteryVoltage As System.UInt32 
InBlock.gif        
Public BatteryCurrent As System.UInt32 
InBlock.gif        
Public BatteryAverageCurrent As System.UInt32 
InBlock.gif        
Public BatteryAverageInterval As System.UInt32 
InBlock.gif        
Public BatterymAHourConsumed As System.UInt32 
InBlock.gif        
Public BatteryTemperature As System.UInt32 
InBlock.gif        
Public BackupBatteryVoltage As System.UInt32 
InBlock.gif        
Public BatteryChemistry As Byte 
ExpandedSubBlockEnd.gif    
End Class
 'SYSTEM_POWER_STATUS_EX2 
InBlock.gif
 
InBlock.gif 
ExpandedSubBlockStart.gifContractedSubBlock.gif    
Public Class SYSTEM_POWER_STATUS_EXClass SYSTEM_POWER_STATUS_EX 
InBlock.gif        
Public ACLineStatus As Byte 
InBlock.gif        
Public BatteryFlag As Byte 
InBlock.gif        
Public BatteryLifePercent As Byte 
InBlock.gif        
Public Reserved1 As Byte 
InBlock.gif        
Public BatteryLifeTime As System.UInt32 
InBlock.gif        
Public BatteryFullLifeTime As System.UInt32 
InBlock.gif        
Public Reserved2 As Byte 
InBlock.gif        
Public BackupBatteryFlag As Byte 
InBlock.gif        
Public BackupBatteryLifePercent As Byte 
InBlock.gif        
Public Reserved3 As Byte 
InBlock.gif        
Public BackupBatteryLifeTime As System.UInt32 
InBlock.gif        
Public BackupBatteryFullLifeTime As System.UInt32 
ExpandedSubBlockEnd.gif    
End Class
 'SYSTEM_POWER_STATUS_EX 
InBlock.gif
 
InBlock.gif    
<DllImport("coredll")> _ 
ExpandedSubBlockStart.gifContractedSubBlock.gif    
Private Shared Function GetSystemPowerStatusEx()Function GetSystemPowerStatusEx(ByVal lpSystemPowerStatus As SYSTEM_POWER_STATUS_EX, ByVal fUpdate As BooleanAs System.UInt32 
ExpandedSubBlockEnd.gif    
End Function
 
InBlock.gif 
InBlock.gif    
<DllImport("coredll")> _ 
ExpandedSubBlockStart.gifContractedSubBlock.gif    
Private Shared Function GetSystemPowerStatusEx2()Function GetSystemPowerStatusEx2(ByVal lpSystemPowerStatus As SYSTEM_POWER_STATUS_EX2, ByVal dwLen As System.UInt32, ByVal fUpdate As BooleanAs System.UInt32 
ExpandedSubBlockEnd.gif    
End Function
 
InBlock.gif 
ExpandedSubBlockStart.gifContractedSubBlock.gif    
Private Sub Form1_Load()Sub Form1_Load(ByVal sender As ObjectByVal e As System.EventArgs) Handles MyBase.Load 
InBlock.gif        RefreshStatus() 
ExpandedSubBlockEnd.gif    
End Sub
 'Form1_Load 
InBlock.gif
 
ExpandedSubBlockStart.gifContractedSubBlock.gif    
Private Sub RefreshStatus()Sub RefreshStatus() 
InBlock.gif        
Dim status As New SYSTEM_POWER_STATUS_EX 
InBlock.gif        
Dim status2 As New SYSTEM_POWER_STATUS_EX2 
InBlock.gif        TextBox1.Text 
= "" 
InBlock.gif        TextBox1.Text 
= "Sample Time:" & Format(Now, "HH:mm:ss"+ vbCrLf + vbCrLf 
InBlock.gif        
With TextBox1 
InBlock.gif            
If Convert.ToInt32(GetSystemPowerStatusEx(status, False)) = 1 Then 
InBlock.gif                
'Do some further work here 
InBlock.gif
            End If 
InBlock.gif            
If Convert.ToInt32(GetSystemPowerStatusEx2(status2, Convert.ToUInt32(Marshal.SizeOf(status2)), False)) = Marshal.SizeOf(status2) Then 
InBlock.gif                
Select Case CInt(status2.ACLineStatus.ToString) 
InBlock.gif                    
Case 0 
InBlock.gif                        .Text 
+= "AC Status: Offline" + vbCrLf 
InBlock.gif                    
Case 1 
InBlock.gif                        .Text 
+= "AC Status: Online" + vbCrLf 
InBlock.gif                    
Case Else 
InBlock.gif                        .Text 
+= "AC Status: Unknown" + vbCrLf 
InBlock.gif                
End Select 
InBlock.gif                .Text 
+= vbCrLf 
InBlock.gif                .Text 
+= "MainBattery" + vbCrLf 
InBlock.gif                .Text 
+= "-LifePercent:" & status2.BatteryLifePercent.ToString + vbCrLf 
InBlock.gif                .Text 
+= "-Voltage:" & (CInt(status2.BatteryVoltage.ToString) / 1000).ToString + "V" + vbCrLf 
InBlock.gif                .Text 
+= "-Current:" & status2.BatteryCurrent.ToString + "mA" + vbCrLf 
InBlock.gif                .Text 
+= "-Temperature:" & (CInt(status2.BatteryTemperature.ToString) / 10).ToString + "" + vbCrLf 
InBlock.gif                .Text 
+= vbCrLf 
InBlock.gif                .Text 
+= "BackupBattery" + vbCrLf 
InBlock.gif                .Text 
+= "-LifePercent:" & status2.BackupBatteryLifePercent.ToString + vbCrLf 
InBlock.gif                .Text 
+= "-Voltage:" & (CInt(status2.BackupBatteryVoltage.ToString) / 1000).ToString + "V" + vbCrLf 
InBlock.gif            
End If 
InBlock.gif        
End With 
ExpandedSubBlockEnd.gif    
End Sub
 
InBlock.gif 
ExpandedSubBlockStart.gifContractedSubBlock.gif    
Private Sub MenuItem3_Click()Sub MenuItem3_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) 
InBlock.gif        Application.
Exit() 
ExpandedSubBlockEnd.gif    
End Sub
 
InBlock.gif 
ExpandedSubBlockStart.gifContractedSubBlock.gif    
Private Sub MenuItem1_Click()Sub MenuItem1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) 
InBlock.gif        RefreshStatus() 
ExpandedSubBlockEnd.gif    
End Sub
 
InBlock.gif 
ExpandedSubBlockStart.gifContractedSubBlock.gif    
Private Sub MenuItem7_Click()Sub MenuItem7_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MenuItem7.Click 
InBlock.gif        Application.
Exit() 
ExpandedSubBlockEnd.gif    
End Sub
 
InBlock.gif 
ExpandedSubBlockStart.gifContractedSubBlock.gif    
Private Sub MenuItem5_Click()Sub MenuItem5_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MenuItem5.Click 
InBlock.gif        RefreshStatus() 
ExpandedSubBlockEnd.gif    
End Sub
 
InBlock.gif 
ExpandedSubBlockStart.gifContractedSubBlock.gif    
Private Sub mnuAutoRefresh_Click()Sub mnuAutoRefresh_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles mnuAutoRefresh.Click 
InBlock.gif        mnuAutoRefresh.Checked 
= Not (mnuAutoRefresh.Checked) 
InBlock.gif        Timer1.Enabled 
= mnuAutoRefresh.Checked 
ExpandedSubBlockEnd.gif    
End Sub
 
InBlock.gif 
ExpandedSubBlockStart.gifContractedSubBlock.gif    
Private Sub Timer1_Tick()Sub Timer1_Tick(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Timer1.Tick 
InBlock.gif        RefreshStatus() 
ExpandedSubBlockEnd.gif    
End Sub
 
InBlock.gif 
ExpandedSubBlockStart.gifContractedSubBlock.gif    
Private Sub mnuAbout_Click()Sub mnuAbout_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles mnuAbout.Click 
InBlock.gif        
MsgBox("Program by Hesicong" & vbCrLf & "http://dream-world.nease.net" & vbCrLf & " http://blog.csdn.net/hesicong" & vbCrLf & "QQ:38288890", MsgBoxStyle.OKOnly, "About"
ExpandedSubBlockEnd.gif    
End Sub
 
InBlock.gif 
ExpandedSubBlockStart.gifContractedSubBlock.gif    
Private Sub MenuItem1_Click_1()Sub MenuItem1_Click_1(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MenuItem1.Click 
InBlock.gif        Timer1.Interval 
= CInt(InputBox("Please enter autorefresh interval(s)""BatteryInfo""1")) * 1000 
ExpandedSubBlockEnd.gif    
End Sub
 
ExpandedBlockEnd.gif
End Class
 
'
Form1 
None.gif
None.gif
你可能感兴趣的文章
IAR中创建STM32工程步骤(寄存器版本)
查看>>
Metro开发中,C#的工程如何打印它所包含的c++的dll的log信息
查看>>
nginx负载均衡策略和配置
查看>>
认识计算机的硬件配备
查看>>
关于Boot
查看>>
一个开发者账号多人多台电脑一起开发 证书 p12 配置文件 导入导出
查看>>
edx 主观题 修改文件后拷贝到虚拟机
查看>>
我的友情链接
查看>>
多网卡绑定:active-backup - 主备模式
查看>>
最近发现了一个玩游戏的好地方
查看>>
增加反向链接的35个技巧
查看>>
Go编程基础5-基础模板用法
查看>>
Valid Anagram(leetcode242)
查看>>
记录一次文件过多的删除经历
查看>>
Operand should contain 1 column(s)
查看>>
基于Python的开源爬虫软件Scrapy快速入门
查看>>
企业创新系列之:格物致知
查看>>
常用命令
查看>>
SaltStack扩展组件
查看>>
圈子科技:圈子联合文化团一行科技出访深圳残友集团
查看>>