突然断电,会先触发vb程序的什么事件吗?比如窗体的unload ?

mosuo 2003-09-12 05:17:27
突然断电,会先触发vb程序的什么事件吗?比如窗体的unload ?
...全文
118 55 打赏 收藏 转发到动态 举报
写回复
用AI写文章
55 条回复
切换为时间正序
请发表友善的回复…
发表回复
seabluesky 2003-11-03
  • 打赏
  • 举报
回复
如果有UPS的话,在外部断电的情况下,UPS会向系统发送一个信号,而系统接到信号后会向所有的应用程序发送一个消息循环,你捕获到这个消息循环就可以知道了!
PiggyXP 2003-11-02
  • 打赏
  • 举报
回复
这不是笑话别人啊,这叫BT-跳跃性思维^_^
chenziteng 2003-11-02
  • 打赏
  • 举报
回复
楼上的楼上 寒一个

SysInfo控件可以吗?

http://www.china-askpro.com/msg33/qa43.shtml

使用SysInfo监视笔记本电脑的电池信息



编号:QA003243
建立日期: 2000年8月17日 最后修改日期:2000年8月17日
所属类别:

Visual Basic - DDK与硬件设备

文章:

李海译自《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属性时使用过。

文章来源:IVBTips。

pigpag 2003-11-02
  • 打赏
  • 举报
回复
//Visual Basic中一个最不经常被使用的控件SysInfo控件

不一定吧,其功能很强大的,自己做给自己用的软件都用这个的,省事。
captainivy 2003-11-01
  • 打赏
  • 举报
回复
楼上强
putongren 2003-09-14
  • 打赏
  • 举报
回复
不同厂家的智能 UPS 有不同的通讯方式,我们有幸用过 120kw 的 UPS 热备双机,配满满40平米房间的电池,就是电网(2路10kv供变电)停电后可以支持服务器机房、所有网络介质以及财务、领导等计算机半天不停电的那种。其实电信的机房供电都是这样的。

跟 UPS 配套的有监控软件,Server 端是 UPS 内部的一个模块(与很多工业设备一样),标准 5 类线连接,TCP/IP协议,UPS 厂商除了提供自己开发的监控界面,还提供函数库API ,支持目前绝大多数操作系统,我当时没看有没有做成 ActiveX。不过我在另外的一些工业设备的随机软件中见过 ActiveX。

我当时用的是厂商的随机软件,在自己的桌面上看着庞大的 UPS 系统的运行状况、电网的负荷等等信息挺有意思的。

国内常见的 APC 的智能 UPS 也应该有这些功能。
Garfield 2003-09-14
  • 打赏
  • 举报
回复
楼主你鄙视之前好像没有说明"如果有UPS"的情况..
那大家只能发挥想象力了..
neo40 2003-09-13
  • 打赏
  • 举报
回复
搞笑
luolovegui 2003-09-13
  • 打赏
  • 举报
回复
真的是高手呢,想出这么好的问题,使回答的人还不少呢
Garfield 2003-09-13
  • 打赏
  • 举报
回复
来个智能化版..
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
Garfield 2003-09-13
  • 打赏
  • 举报
回复
非正常退出应该不能写值吧?
我想因该是:

正常启动设一个值
正常退出清空这个值

下次启动如果发现值非空则-> 非正常退出 -> 启动磁盘扫描....
道素 2003-09-13
  • 打赏
  • 举报
回复
注册表(或别的地方)写个标志,正常退出一个值,非正常退出另一个值,然后加载检查上次是不是正常退出
viena 2003-09-13
  • 打赏
  • 举报
回复
高!
ipman 2003-09-13
  • 打赏
  • 举报
回复
ups一般通过串口和系统连接,用mscomm控件+ups协议解决吧
xianghai 2003-09-13
  • 打赏
  • 举报
回复
要微软提供一个事件。
Ranma_True 2003-09-13
  • 打赏
  • 举报
回复
搞笑
xiaohei728 2003-09-13
  • 打赏
  • 举报
回复
没事了原来真的很历害吗


想不到你还想这些事太好玩了
我怎么想不出来呢?
CHKK 2003-09-13
  • 打赏
  • 举报
回复
搞笑!!!!!牛~~~~~!
mosuo 2003-09-13
  • 打赏
  • 举报
回复
我鄙视楼上那些爱笑话别人的人,
有的事并不是不可能做到。

如果有UPS,事情就不一样。系统能够捕获UPS工作状态变化。如果有UPS,系统就会发出外部电源断电事件,程序可以捕获。

请问这个怎么捕获???
airon2002 2003-09-13
  • 打赏
  • 举报
回复
UPS功能启动了
加载更多回复(35)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧