i'm using a mouse hook in order to trap mouse clicks as following :
it works fine, until i alt-tab to another window and switch back to this, the procedure doesn't get the event any more. anybody knows why ?Code:Option Explicit Public Const WH_MOUSE = 7 Public Const WM_LBUTTONDOWN = 513 Public Const WM_RBUTTONDOWN = 516 Public Const HC_ACTION = 0 Public IsHooked As Boolean Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" ( _ ByVal idHook As Long, _ ByVal lpfn As Long, _ ByVal hmod As Long, _ ByVal dwThreadId As Long _ ) As Long Private Declare Function UnhookWindowsHookEx Lib "user32" ( _ ByVal hHook As Long _ ) As Long Private Declare Function CallNextHookEx Lib "user32" ( _ ByVal hHook As Long, _ ByVal nCode As Long, _ ByVal wParam As Long, _ lParam As Any _ ) As Long Public hMhook As Long Public rmouseButtonWasPressed As Boolean Public Sub SetMouseHook() If IsHooked = False Then hMhook = SetWindowsHookEx(WH_MOUSE, AddressOf MouseHookProc, App.hInstance, 0) IsHooked = True End If End Sub Public Sub RemoveMouseHook() UnhookWindowsHookEx hMhook IsHooked = False End Sub Public Function MouseHookProc(ByVal nCode As Long, ByVal wParam As Long, lParam As Long) As Integer If (nCode >= 0 And nCode = HC_ACTION) Then If wParam = WM_RBUTTONDOWN And rmouseButtonWasPressed = False Then rmouseButtonWasPressed = True Form1.Text1.Text = "rmouse" Else rmouseButtonWasPressed = False Form1.Text1.Text = "" End If End If MouseHookProc = CallNextHookEx(hMhook, nCode, wParam, lParam) End Function




Reply With Quote