home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2000 May / VPR0005A.BIN / PROGRAM / VB / CPowerEvent.cls next >
Text File  |  2000-03-02  |  3KB  |  102 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "CPowerEvent"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. Private Declare Function GetSystemPowerStatus Lib "kernel32" (SystemPowerStatus As SYSTEM_POWER_STATUS) As Long
  15.  
  16. Public Enum ApmQuerySuspend
  17.     BROADCAST_QUERY_ALLOW = 1
  18.     BROADCAST_QUERY_DENY = &H424D5144
  19. End Enum
  20. Public Enum PowerEventType
  21.     PBT_APMQUERYSUSPEND = &H0
  22.     PBT_APMQUERYSTANDBY = &H1
  23.     PBT_APMQUERYSUSPENDFAILED = &H2
  24.     PBT_APMQUERYSTANDBYFAILED = &H3
  25.     PBT_APMSUSPEND = &H4
  26.     PBT_APMSTANDBY = &H5
  27.     PBT_APMRESUMECRITICAL = &H6
  28.     PBT_APMRESUMESUSPEND = &H7
  29.     PBT_APMRESUMESTANDBY = &H8
  30.     PBT_APMBATTERYLOW = &H9
  31.     PBT_APMPOWERSTATUSCHANGE = &HA
  32.     PBT_APMOEMEVENT = &HB
  33.     PBT_APMRESUMEAUTOMATIC = &H12
  34. End Enum
  35. Private Type SYSTEM_POWER_STATUS
  36.     ACLineStatus As Byte
  37.     BatteryFlag As Byte
  38.     BatteryLifePercent As Byte
  39.     Reserved1 As Byte
  40.     BatteryLifeTime As Long
  41.     BatteryFullLifeTime As Long
  42. End Type
  43.  
  44. Private m_lpOldWindowProcAddress As Long
  45. Private m_hHookWnd As Long
  46. Private m_udtPowerStatus As SYSTEM_POWER_STATUS
  47. Public Event PowerEvent(ByVal plt As PowerEventType, ByVal lDetailData As Long, ByRef lReturn As Long)
  48.  
  49. Private Sub Class_Initialize()
  50.     m_hHookWnd = 0
  51.     GetSystemPowerStatus m_udtPowerStatus
  52. End Sub
  53. Private Sub Class_Terminate()
  54.     UnHook
  55. End Sub
  56. Public Sub Hook(frmHook As Form)
  57.     If m_hHookWnd = 0 Then
  58.         With frmHook
  59.             m_hHookWnd = .hWnd
  60.             SetProp m_hHookWnd, CStr(m_hHookWnd), ObjPtr(Me)
  61.             m_lpOldWindowProcAddress = SetWindowLong(m_hHookWnd, _
  62.                                                      GWL_WNDPROC, _
  63.                                                      AddressOf NewWindowProc)
  64.         End With
  65.     End If
  66. End Sub
  67. Public Sub UnHook()
  68.     If m_hHookWnd Then
  69.         SetWindowLong m_hHookWnd, GWL_WNDPROC, m_lpOldWindowProcAddress
  70.         RemoveProp m_hHookWnd, CStr(m_hHookWnd)
  71.         m_lpOldWindowProcAddress = 0
  72.         m_hHookWnd = 0
  73.     End If
  74. End Sub
  75. Friend Function CallBackWindowProc(hWnd As Long, uMsg As Long, wParam As Long, lParam As Long) As Long
  76.     Const WM_POWERBROADCAST = &H218
  77.     Select Case uMsg
  78.            Case WM_POWERBROADCAST
  79.                 If wParam = PBT_APMPOWERSTATUSCHANGE Then
  80.                     GetSystemPowerStatus m_udtPowerStatus
  81.                 End If
  82.                 RaiseEvent PowerEvent(wParam, lParam, CallBackWindowProc)
  83.            Case Else
  84.                 CallBackWindowProc = CallWindowProc(m_lpOldWindowProcAddress, hWnd, uMsg, wParam, ByVal lParam)
  85.     End Select
  86. End Function
  87. Public Property Get ACLineStatus() As Byte
  88.     ACLineStatus = m_udtPowerStatus.ACLineStatus
  89. End Property
  90. Public Property Get BatteryFlag() As Byte
  91.     BatteryFlag = m_udtPowerStatus.BatteryFlag
  92. End Property
  93. Public Property Get BatteryLifePercent() As Byte
  94.     BatteryLifePercent = m_udtPowerStatus.BatteryLifePercent
  95. End Property
  96. Public Property Get BatteryLifeTime() As Long
  97.     BatteryLifeTime = m_udtPowerStatus.BatteryLifeTime
  98. End Property
  99. Public Property Get BatteryFullLifeTime() As Long
  100.     BatteryFullLifeTime = m_udtPowerStatus.BatteryFullLifeTime
  101. End Property
  102.