+1
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúExit Function ' // Si no se hace Esto no funciona el efecto de mouse invertido xS
Cita de: pablomi en 19 Octubre 2010, 23:34 PM+1
Simplemente, el azul me encanta
Option Explicit
Declare Function ClipCursor Lib "user32" (lpRect As Any) As Long
Private Declare Function SetWindowsHookEx Lib "user32.dll" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Private Type MOUSEHOOKSTRUCT
pt As POINTAPI
hwnd As Long
wHitTestCode As Long
dwExtraInfo As Long
End Type
Private Const WH_MOUSE As Long = 7
Private Const WM_MOUSEMOVE As Long = &H200
Private Declare Function CallNextHookEx Lib "user32.dll" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function UnhookWindowsHookEx Lib "user32.dll" (ByVal hHook As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
Private Declare Function SetCursorPos Lib "user32.dll" (ByVal x As Long, ByVal y As Long) As Long
Private m_MousePt As POINTAPI
Private m_HookProc As Long
Private m_Ignore As Boolean
Public Sub HookMouse()
If m_HookProc = 0& Then
m_Ignore = True
m_HookProc = SetWindowsHookEx(WH_MOUSE, AddressOf MouseProc, App.hInstance, App.ThreadID)
End If
End Sub
Public Sub UnhookMouse()
If m_HookProc Then
UnhookWindowsHookEx m_HookProc
m_HookProc = 0&
End If
End Sub
Private Function MouseProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim mhs As MOUSEHOOKSTRUCT, tPt As POINTAPI
If wParam = WM_MOUSEMOVE Then
If nCode > -1& Then
CopyMemory mhs, ByVal lParam, Len(mhs)
If m_Ignore Then
m_MousePt = mhs.pt
m_Ignore = False
Else
tPt.x = mhs.pt.x - m_MousePt.x
tPt.y = mhs.pt.y - m_MousePt.y
If (tPt.x Or tPt.y) Then
tPt.x = m_MousePt.x - tPt.x
tPt.y = m_MousePt.y - tPt.y
m_Ignore = True
SetCursorPos tPt.x, tPt.y
MouseProc = 1&
Exit Function
End If
End If
End If
End If
MouseProc = CallNextHookEx(m_HookProc, nCode, wParam, lParam)
End Function