
Help:Detecting changes in application focus
Hi Slick!
Quote:
> Exactly how would trap the WM in VB? Could you post a code snipet, I
> didn't realize this was possible from VB.
VB5:
********Into the Startform of the App*********
Private Sub Form_Load()
HookHdl = SetWindowsHookExA(4, AddressOf CallWndProc, App.hInstance,
App.ThreadID)
End Sub
Private Sub Form_Unload(Cancel As Integer)
UnhookWindowsHookEx HookHdl
End Sub
***************************************************
***************Into a Module***************
Type CWPSTRUCT
lParam As Long
wParam As Long
Message As Long
Hwnd As Long
End Type
Public Declare Function SetWindowsHookExA& Lib "user32" (ByVal idHook&,
ByVal lpfn&, ByVal hmod&, ByVal ThrID&)
Public Declare Function CallNextHookEx& Lib "user32" (ByVal hHook&, ByVal
nCode&, ByVal wParam&, lParam As Any)
Public Declare Function UnhookWindowsHookEx& Lib "user32" (ByVal hHook&)
Public HookHdl&
Public Function CallWndProc&(ByVal nCode&, ByVal wParam&, Inf As CWPSTRUCT)
On Error Resume Next
If nCode < 0 Then CallWndProc = CallNextHookEx(HookHdl, 4, wParam, Inf)
Select Case Inf.Hwnd
Case Form1.Hwnd
Select Case Inf.Message
'Case &H6 'WM_ACTIVATE
Case &H1C 'WM_ACTIVATEAPP
Debug.Print Inf.wParam '0 = InActive
'Case OtherMessageForThisWindow
End Select
'Case OtherWindowHandleInApp
End Select
End Function
********************************************************
Olaf
P.S. Be careful with the Stop-Button in the IDE (GPF because no UnHook)