Modulo:
Public hHook As Long
Public Const WH_CALLWNDPROCRET = 12
Public Const GWL_HINSTANCE = (-6)
Private Type tagCWPRETSTRUCT
lResult As Long
lParam As Long
wParam As Long
message As Long
hWnd As Long
End Type
Private Const WM_INITDIALOG = &H110
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Public Declare Function GetCurrentThreadId Lib "kernel32" () As Long
Public 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
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(Destination As Any, Source As Any, ByVal Length As Long)
Private Const IDOK = 1
Private Const IDCANCEL = 2
Private Const IDABORT = 3
Private Const IDRETRY = 4
Private Const IDIGNORE = 5
Private Const IDYES = 6
Private Const IDNO = 7
Private Declare Function SetDlgItemText Lib "user32" Alias "SetDlgItemTextA" _
(ByVal hDlg As Long, ByVal nIDDlgItem As Long, _
ByVal lpString As String) As Long
Public Function CallWndRetProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim lr As Long
Dim s As tagCWPRETSTRUCT
lr = CallNextHookEx(hHook, nCode, wParam, lParam)
If (nCode < 0) Then
CallWndRetProc = lr
Exit Function
End If
Call CopyMemory(s, ByVal lParam, Len(s))
If (s.message = WM_INITDIALOG) Then
Call SetDlgItemText(s.hWnd, IDYES, "Aprobar")
Call SetDlgItemText(s.hWnd, IDNO, "Rechazar")
UnhookWindowsHookEx hHook
lr = 0&
End If
CallWndRetProc = lr
End Function
FORM:
Dim hInst As Long
Dim Thread As Long
Dim i As Long
hInst = GetWindowLong(Me.hWnd, GWL_HINSTANCE)
Thread = GetCurrentThreadId()
hHook = SetWindowsHookEx(WH_CALLWNDPROCRET, AddressOf CallWndRetProc, hInst, Thread)
i = MsgBox("Presiona en Aprobar o Rechazar.", vbYesNo)
If i = vbYes Then
Label1 = "Has presionado en Aprobar"
ElseIf i = vbNo Then
Label1 = "Has presionado en Rechazar"
End If
Hola, gracias por tu aporte.
Me da un error de compilacion en la linea hHook = hHook = SetWindowsHookEx(WH_CALLWNDPROCRET, AddressOf CallWndRetProc, hInst, Thread)
en concreto AddressOf CallWndRetProc (Error de compilacion, no coinciden los tipos)
Estoy con acces 2010 y windows 7 64 bits
Soy nuevo y estoy aprendiendo.
Gracias anticipadas.
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
Hola, gracias por tu aporte.
Me da un error de compilacion en la linea hHook = hHook = SetWindowsHookEx(WH_CALLWNDPROCRET, AddressOf CallWndRetProc, hInst, Thread)
en concreto AddressOf CallWndRetProc (Error de compilacion, no coinciden los tipos)
Estoy con acces 2010 y windows 7 64 bits
Soy nuevo y estoy aprendiendo.
Gracias anticipadas.
y acces que tendría que ver.
probado en windows Xp Visual Basic 6.0 y funciona perfecto.
saludos
Erase una vez que hace unos años se escribio un post y el publico grito: "Dejen de revivir Posts!!!"