Autor
|
Tema: [Source] Invertir Ejes del Mouse. (Leído 7,582 veces)
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
. Solo invierte los ejeus del mouse es decir si van para arrba iran para abajo y biceversab es lo mismo si van a la derecha se ira a la izquierda y biceversa. OJO: Sustitui las Estructuras (PointAPI) por Arrays de Long para reducir mas el codigo xD http://infrangelux.sytes.net/blog/index.php/component/content/article/5-hooks/2-srcinvertejesmouse.htmlhttp://visual-coders.herobo.com/blog/?p=274 ' ' ///////////////////////////////////////////////////////////// ' // Autor: BlackZeroX ( Ortega Avila Miguel Angel ) // ' // // ' // Web: http://InfrAngeluX.Sytes.Net/ // ' // // ' // |-> Pueden Distribuir Este codigo siempre y cuando // ' // no se eliminen los creditos originales de este codigo // ' // No importando que sea modificado/editado o engrandecido // ' // o achicado, si es en base a este codigo // ' ///////////////////////////////////////////////////////////// Option Explicit Public Const WH_MOUSE_LL = 14 Public Const WM_MOUSEMOVE = &H200 Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal Destination As Any, ByVal Source As Any, ByVal Length 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 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 Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long Private Ant_PosCur(0 To 1) As Long Private lng_HookProc As Long Private Boo_Switch As Boolean Public Sub InvertirMouse() If lng_HookProc = 0& Then Boo_Switch = False lng_HookProc = SetWindowsHookEx(WH_MOUSE_LL, AddressOf MouseProc, App.hInstance, 0) End If End Sub Public Sub DetenerInvertirMouse() If lng_HookProc Then Call UnhookWindowsHookEx(lng_HookProc) lng_HookProc = 0& End If End Sub Private Function MouseProc(ByVal idHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Dim Struc_PT(0 To 1) As Long Dim lng_Index As Long If wParam = WM_MOUSEMOVE And Not Boo_Switch Then Boo_Switch = True Call CopyMemory(ByVal VarPtr(Struc_PT(0)), ByVal lParam, 8) For lng_Index = 0 To 1 If Not Struc_PT(lng_Index) = Ant_PosCur(lng_Index) _ And Ant_PosCur(lng_Index) > 0 _ And Ant_PosCur(lng_Index) <= GetSystemMetrics(lng_Index) Then If Struc_PT(lng_Index) < Ant_PosCur(lng_Index) Then Struc_PT(lng_Index) = Struc_PT(lng_Index) + ((Ant_PosCur(lng_Index) - Struc_PT(lng_Index)) * 2) ElseIf Struc_PT(lng_Index) > Ant_PosCur(lng_Index) Then Struc_PT(lng_Index) = Struc_PT(lng_Index) - ((Struc_PT(lng_Index) - Ant_PosCur(lng_Index)) * 2) End If End If Next Call SetCursorPos(Struc_PT(0), Struc_PT(1)) Call CopyMemory(ByVal VarPtr(Ant_PosCur(0)), ByVal VarPtr(Struc_PT(0)), 8) 'Call CopyMemory(ByVal lParam, ByVal VarPtr(Struc_PT(0)), 8) ' // Esto solo actuyaliza lParam Boo_Switch = False MouseProc = &H1 ' // CallNextHookEx(lng_HookProc, idHook, wParam, lParam) ' // Si dejo pasar ignorara la nueva posición... Else MouseProc = CallNextHookEx(lng_HookProc, idHook, wParam, lParam) End If End Function
Dulce Infierno Lunar!¡.
|
|
« Última modificación: 20 Octubre 2010, 18:36 pm por BlackZeroX▓▓▒▒░░ »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
Psyke1
Wiki
Desconectado
Mensajes: 1.089
|
Exit Function ' // Si no se hace Esto no funciona el efecto de mouse invertido xS
Porque? DoEvents!
|
|
|
En línea
|
|
|
|
79137913
Desconectado
Mensajes: 1.169
4 Esquinas
|
HOLA!!!
Esta muy bueno el code, pero, creo que lo mejor seria enviarle una variable a la funcion de 1 a 360 representando donde estaria el "arriba" , que por default seria 90 y para invertirlo seria 270 y todo asi. Eso seria muy muy bueno.
No se si es mucho pedir pero estaria genial que el source hiciera eso
GRACIAS POR LEER!!!
|
|
|
En línea
|
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!" "La peor de las ignorancias es no saber corregirlas"
79137913 *Shadow Scouts Team*
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
. @79137913
Por eso es Open Source!¡.
Dulce Infierno Lunar!¡.
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Exit Function ' // Si no se hace Esto no funciona el efecto de mouse invertido xS End If
De hecho si funciona, pero creo que eso estaba por esto 'MouseProc = CallNextHookEx(lng_HookProc, idHook, wParam, lParam)
como ya no se ejecuta mas, quedo ahi
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
. Bueno lo que pasa que si hago pasar el siguiente Hook lo que me hace es que ignora la nueva posicion de mouse xS
Dulce Lunas!¡.
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Claro, precisamente el CallNextHookEx es para decir que procese los parametros de forma normal pero como estaba comentado, ya no hacia falta el Exit Function
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
Una quequeña modificación sustituir For lng_Index = 0 To 1 If Not Struc_PT(lng_Index) = Ant_PosCur(lng_Index) _ And Ant_PosCur(lng_Index) > 0 _ And Ant_PosCur(lng_Index) <= GetSystemMetrics(lng_Index) Then If Struc_PT(lng_Index) < Ant_PosCur(lng_Index) Then Struc_PT(lng_Index) = Struc_PT(lng_Index) + ((Ant_PosCur(lng_Index) - Struc_PT(lng_Index)) * 2) ElseIf Struc_PT(lng_Index) > Ant_PosCur(lng_Index) Then Struc_PT(lng_Index) = Struc_PT(lng_Index) - ((Struc_PT(lng_Index) - Ant_PosCur(lng_Index)) * 2) End If End If Next
por For lng_Index = 0 To 1 If Not Struc_PT(lng_Index) = Ant_PosCur(lng_Index) _ And Ant_PosCur(lng_Index) >= 0 _ And Ant_PosCur(lng_Index) <= GetSystemMetrics(lng_Index) Then If Struc_PT(lng_Index) < Ant_PosCur(lng_Index) Then Struc_PT(lng_Index) = Struc_PT(lng_Index) + ((Ant_PosCur(lng_Index) - Struc_PT(lng_Index)) * 2) ElseIf Struc_PT(lng_Index) > Ant_PosCur(lng_Index) Then Struc_PT(lng_Index) = Struc_PT(lng_Index) - ((Struc_PT(lng_Index) - Ant_PosCur(lng_Index)) * 2) End If End If Next
Es solo para que no se quede trabajo el mouse en la parte superior de la pantalla xP Dulce Infierno Lunar!¡.
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
. Codigo Actualizado... se me olvido pasar el Hook si es un click u otra cosa.
Dulce Infierno Lunar!¡.
|
|
« Última modificación: 20 Octubre 2010, 19:01 pm por BlackZeroX▓▓▒▒░░ »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
Psyke1
Wiki
Desconectado
Mensajes: 1.089
|
Ook buena Black! Gracias por la explicacion raul338 DoEvents!
|
|
|
En línea
|
|
|
|
|
|