李海译自《IVBTips》
Visual Basic中一个最不经常被使用的控件SysInfo控件,这个控件可以在“部件”对话框中显示为Microsoft SysInfo Control Version 6.0 (在VB 5.0中为5.0)。SysInfo控件使你可以获得关于操作系统属性的信息、即插即用事件、系统事件和电池状态。正如你知道的,对于大多数笔记本电脑,电池是基石,虽然有的桌面系统也包括电池。借助于SysInfo的三个属性的帮助,你可以在Visual Basic中监视PC的电池状态。
控件的ACStatus属性让你可以决定当前AC电源或电池电源是否正在被使用。这个属性返回三个值之一: 0, 1和255。
下面的代码片段显示了三个值的含义:
Select Case SysInfo1.ACStatus
Case 0
MsgBox "没有使用AC电源"
Case 1
MsgBox "使用AC电源"
Case 255
MsgBox "未知AC电源状态"
End Select
BatteryLifePercent属性可以让你监视电池充电状态。这个属性返回一个百分比,指示电池中剩余电量。你可以使用:
Dim PerCentLeft As String
If SysInfo1.BatteryLifePercent <> 255 Then
PerCentLeft = SysInfo1.BatteryLifePercent
MsgBox PerCentLeft & "%"
Else
MsgBox "电源电量未知"
End If
如果你的笔记本电脑运行在一个电池电源的情况下,你需要一个方法来决定电池还能持续多长时间。这个值可以使用BatteryLifeTime属性获得,如下:
If SysInfo1.BatteryLifeTime <> &HFFFFFFFF Then
MsgBox Format((TimeSerial(0, 0, _
SysInfo1.BatteryLifeTime)), "h:mm")
Else
MsgBox "无法决定剩余电池时间"
End If
正如你看到的,这个代码片段当获得BatteryFullTime属性时使用过。
来个智能化版..
Private Sub Form_PowerLost()
startTime = timer
if msgbox("没电了,忽略此错误并继续运行?",vbYesNo, "错误") = vbYes then
do until 有电 = true
if timer - starttime >= 1800 then
if msgbox("30分钟还没来电,是否自动拨号到供电局 5354709394 咨询?", vbYesNo, "等待超时") = vbYes
open "Com1" for output as #1 ' 打开COM1, 如果modem是在这里的话
print #1,, "ATDT 5354709394"
close #1
msgbox "电话已拨打, 请人工应答..."
if msgbox("问题已经解决?",vbYesNo) = vbYes then exit do
end if
end if
doevents
debug.print "等待有电中....(快来电啊)"
loop
end if
End Sub