Controlar el ratón con la API de windows mouse_event
Decidí crear este post porque en los que vi (no vi muchos igual ajja), para hacer esto mismo utilizan tres APIs: mouse_event solo para hacer clic, después una para obtener la posición del puntero y otra para codificarla. Acá solo voy a utilizar la primera, xq con esta también movés el puntero, la rueda, etc.
Yo supongo que ya saben como utilizar el visual basic así que:
1. Crean un modulo
2. Pegan todas estas porquerías:
Public Enum MOUSEEVENTENUM
MOUSEEVENTF_ABSOLUTE = &H8000
MOUSEEVENTF_LEFTDOWN = &H2
MOUSEEVENTF_LEFTUP = &H4
MOUSEEVENTF_MIDDLEDOWN = &H20
MOUSEEVENTF_MIDDLEUP = &H40
MOUSEEVENTF_RIGHTDOWN = &H8
MOUSEEVENTF_RIGHTUP = &H10
MOUSEEVENTF_WHEEL = &H800
MOUSEEVENTF_HWHEEL = &H1000
MOUSEEVENTF_MOVE = &H1
End Enum
Declare Sub mouse_event Lib "user32.dll" (ByVal dwFlags As MOUSEEVENTENUM, _
ByVal dx As Long, _
ByVal dy As Long, _
ByVal dwData As Long, _
ByVal dwExtraInfo As Long)
Y TA ya quedo listo solo queda usar esto:
Para hacer clic izquierdo:
PARA PRESIONAR EL BOTÓN :
mouse_event MOUSEEVENTF_LEFTDOWN, 0,0,0,0
PARA SOLTAR EL BOTÓN
mouse_event MOUSEEVENTF_LEFTUP , 0,0,0,0
Hacer clic derecho:
Igual que el anterior pero con MOUSEEVENTF_RIGHTDOWN para presionar y MOUSEEVENTF_RIGHTUP para soltar
Clic con botón central:
Igual que los dos anteriores pero pero con MOUSEEVENTF_MIDDLEDOWN para presionar y MOUSEEVENTF_MIDDLEUP para soltar el botón
Muy importante es ejecutar la función de soltar el botón sino el clic quedara presionado
Mover el puntero:
En el primer parámetro se coloca MOUSEEVENTF_MOVE
En el parámetro dx se pone la cantidad que queremos que se mueva en el eje de las X y en dy en el de las Y.
Ejemplos:
mouse_event MOUSEEVENTF_MOVE , 10,0,0,0 Mueve 10 mickeys (si se mide en mickeys ) hacia a derecha
mouse_event MOUSEEVENTF_MOVE , -10,0,0,0 Mueve mickeys 10 hacia la izquierda
mouse_event MOUSEEVENTF_MOVE , 0,20,0,0 Mueve mickeys 20 hacia abajo
mouse_event MOUSEEVENTF_MOVE , 0,-20,0,0 Mueve mickeys 20 hacia arriba
mouse_event MOUSEEVENTF_MOVE , 10,-10,0,0 en diagonal hacia arriba a la derecha
Y así ponen los valores que quieran, si ponen valores muy altos solo va a quedar contra un borde.
También se pueden poner las coordenadas a donde quieren que aparezca el puntero. Esto se hace con MOUSEEVENTF_ABSOLUTE, en dx y dy las coordenadas de X e Y respectivamente.
ejemplo:
mouse_event MOUSEEVENTF_ABSOLUTE, 450, 1560, 0, 0 Que es en algún lugar de la pantalla
Mover la rueda del mouse:
Si se desea girar la rueda de forma vertical es con MOUSEEVENTF_WHEEL, de forma horizontal es con MOUSEEVENTF_HWHEEL ( ).
En dwData (que es el cuarto parámetro) se especifica cuanto querés que gire.
Ejemplos:
mouse_event MOUSEEVENTF_WHEEL, 0, 0, 10, 0 Haces girar la rueda hacia arriba
mouse_event MOUSEEVENTF_WHEEL, 0, 0, -10, 0 Hacia abajo
mouse_event MOUSEEVENTF_HWHEEL, 0, 0, -10, 0 Se inclina hacia la izquierda
mouse_event MOUSEEVENTF_HWHEEL, 0, 0, 10, 0 Hacia la derecha
Y eso es todo espero que les sirva para algún proyecto que hagan, a mi me andubo bien de bien en vb 6 pero en los mas nuevos debe de andar también tal vez con modificaciones.
A la información la saque de la pagina de Microsoft (está en ingles y para c++ no para vb) que voy a poner a continuación.
Decidí crear este post porque en los que vi (no vi muchos igual ajja), para hacer esto mismo utilizan tres APIs: mouse_event solo para hacer clic, después una para obtener la posición del puntero y otra para codificarla. Acá solo voy a utilizar la primera, xq con esta también movés el puntero, la rueda, etc.
Yo supongo que ya saben como utilizar el visual basic así que:
1. Crean un modulo
2. Pegan todas estas porquerías:
Public Enum MOUSEEVENTENUM
MOUSEEVENTF_ABSOLUTE = &H8000
MOUSEEVENTF_LEFTDOWN = &H2
MOUSEEVENTF_LEFTUP = &H4
MOUSEEVENTF_MIDDLEDOWN = &H20
MOUSEEVENTF_MIDDLEUP = &H40
MOUSEEVENTF_RIGHTDOWN = &H8
MOUSEEVENTF_RIGHTUP = &H10
MOUSEEVENTF_WHEEL = &H800
MOUSEEVENTF_HWHEEL = &H1000
MOUSEEVENTF_MOVE = &H1
End Enum
Declare Sub mouse_event Lib "user32.dll" (ByVal dwFlags As MOUSEEVENTENUM, _
ByVal dx As Long, _
ByVal dy As Long, _
ByVal dwData As Long, _
ByVal dwExtraInfo As Long)
Y TA ya quedo listo solo queda usar esto:
Para hacer clic izquierdo:
PARA PRESIONAR EL BOTÓN :
mouse_event MOUSEEVENTF_LEFTDOWN, 0,0,0,0
PARA SOLTAR EL BOTÓN
mouse_event MOUSEEVENTF_LEFTUP , 0,0,0,0
Hacer clic derecho:
Igual que el anterior pero con MOUSEEVENTF_RIGHTDOWN para presionar y MOUSEEVENTF_RIGHTUP para soltar
Clic con botón central:
Igual que los dos anteriores pero pero con MOUSEEVENTF_MIDDLEDOWN para presionar y MOUSEEVENTF_MIDDLEUP para soltar el botón
Muy importante es ejecutar la función de soltar el botón sino el clic quedara presionado
Mover el puntero:
En el primer parámetro se coloca MOUSEEVENTF_MOVE
En el parámetro dx se pone la cantidad que queremos que se mueva en el eje de las X y en dy en el de las Y.
Ejemplos:
mouse_event MOUSEEVENTF_MOVE , 10,0,0,0 Mueve 10 mickeys (si se mide en mickeys ) hacia a derecha
mouse_event MOUSEEVENTF_MOVE , -10,0,0,0 Mueve mickeys 10 hacia la izquierda
mouse_event MOUSEEVENTF_MOVE , 0,20,0,0 Mueve mickeys 20 hacia abajo
mouse_event MOUSEEVENTF_MOVE , 0,-20,0,0 Mueve mickeys 20 hacia arriba
mouse_event MOUSEEVENTF_MOVE , 10,-10,0,0 en diagonal hacia arriba a la derecha
Y así ponen los valores que quieran, si ponen valores muy altos solo va a quedar contra un borde.
También se pueden poner las coordenadas a donde quieren que aparezca el puntero. Esto se hace con MOUSEEVENTF_ABSOLUTE, en dx y dy las coordenadas de X e Y respectivamente.
ejemplo:
mouse_event MOUSEEVENTF_ABSOLUTE, 450, 1560, 0, 0 Que es en algún lugar de la pantalla
Mover la rueda del mouse:
Si se desea girar la rueda de forma vertical es con MOUSEEVENTF_WHEEL, de forma horizontal es con MOUSEEVENTF_HWHEEL ( ).
En dwData (que es el cuarto parámetro) se especifica cuanto querés que gire.
Ejemplos:
mouse_event MOUSEEVENTF_WHEEL, 0, 0, 10, 0 Haces girar la rueda hacia arriba
mouse_event MOUSEEVENTF_WHEEL, 0, 0, -10, 0 Hacia abajo
mouse_event MOUSEEVENTF_HWHEEL, 0, 0, -10, 0 Se inclina hacia la izquierda
mouse_event MOUSEEVENTF_HWHEEL, 0, 0, 10, 0 Hacia la derecha
Y eso es todo espero que les sirva para algún proyecto que hagan, a mi me andubo bien de bien en vb 6 pero en los mas nuevos debe de andar también tal vez con modificaciones.
A la información la saque de la pagina de Microsoft (está en ingles y para c++ no para vb) que voy a poner a continuación.