home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2000 May / VPR0005A.BIN / PROGRAM / VB / SPowerEvent.bas < prev   
BASIC Source File  |  2000-03-02  |  1KB  |  21 lines

  1. Attribute VB_Name = "SPowerEvent"
  2. Option Explicit
  3. Public Declare Sub RtlMoveMemory Lib "kernel32" (pDest As Any, pSource As Any, ByVal ByteLen As Long)
  4. Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  5. Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
  6. Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal wndrpcPrev As Long, ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  7. Declare Function SetProp Lib "user32" Alias "SetPropA" (ByVal hWnd As Long, ByVal lpString As Any, ByVal hData As Long) As Long
  8. Declare Function GetProp Lib "user32" Alias "GetPropA" (ByVal hWnd As Long, ByVal lpString As Any) As Long
  9. Declare Function RemoveProp Lib "user32" Alias "RemovePropA" (ByVal hWnd As Long, ByVal lpString As Any) As Long
  10. Public Const GWL_WNDPROC = -4
  11. Public Const LONG_POINTER_SIZE As Long = 4
  12.  
  13. Public Function NewWindowProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  14.     Dim oPowerEvent As CPowerEvent
  15.     Dim lpPowerEvent As Long
  16.     lpPowerEvent = GetProp(hWnd, CStr(hWnd))
  17.     RtlMoveMemory oPowerEvent, lpPowerEvent, LONG_POINTER_SIZE
  18.     NewWindowProc = oPowerEvent.CallBackWindowProc(hWnd, uMsg, wParam, lParam)
  19.     RtlMoveMemory oPowerEvent, 0&, LONG_POINTER_SIZE
  20. End Function
  21.