Option Explicit
Public Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Public Declare Function CallWindowProc Lib "user32" _
Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long
Public Const GWL_WNDPROC = (-4)
Global PrevWndProc As Long
Public Sub Activa()
PrevWndProc = SetWindowLong(Form1.Text1.hWnd, GWL_WNDPROC, AddressOf interceptar)
End Sub
Public Sub Desactiva()
Dim temp As Long
temp = SetWindowLong(Form1.Text1.hWnd, GWL_WNDPROC, PrevWndProc)
End Sub
Public Function interceptar(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = &H11F Then 'WM_MENUSELECT = &H11F
If wParam = -2139062272 Then 'Es el parámetro wParam correspondiente.
Debug.Print "Has pasado sobre -lectura de derecha a izquierda- " & Now & ""
interceptar = True
End If
Else
interceptar = CallWindowProc(PrevWndProc, hWnd, Msg, wParam, lParam)
End If
End Function