Visual Basic - ¿Como envio Clicks a una ventana?

Life is soft - evento anual de software empresarial
 
Vista:

¿Como envio Clicks a una ventana?

Publicado por Danny (11 intervenciones) el 18/09/2005 17:36:34
NECESITO AYUDA...

TENGO UN JUEGO QUE REQUIERE QUE ESTE DANDO CLICKS CADA 1 SEGUNDO, QUIERO HACER UN PROGRAMA QUE AGA ESTO POR MI, TENGO UN POCO DE CONOCIMIENTOS EN VB Y ESTOY PENSANDO EN HACERLO CON UN TIMER, EL PROBLEMA ES QUE NO SE COMO ENVIAR LOS CLICKS. NECESITO UNA FUNCION QUE ME ENVIE CLICKS IZQUIERDOS EN CUALQUIER LUGAR DONDE ESTA SITUADO MI CURSOR. ESTE ES UN EJEMPLO..

Private Sub Form_Load()
Timer1.Interval = 1000
End Sub

Private Sub Command1_Click()
Timer1.Enabled = True
End Sub

Private Sub Command2_Click()
Timer1.Enabled = False
End Sub

Private Sub Timer1_Timer()
'AQUI LA FUNCION DE ENVIAR CLICKS IZQUIERDOS.
'NO IMPORTA LA VENTANA, YA QUE ES UN JUEGO EN PANTALLA COMPLETA
'LOS CLICKS SE ENVIAN DONDE ESTA SITUADO MI CURSOR
End Sub

PORFAVOR NECESITO AYUDA EN ENVIAR CLICKS YA QUE ES MOLESTO ENVIAR MUCHOS CLICKS Y ES MAS FACIL CON ESTE PROGRAMA.

MI EMAIL: [email protected] SI GUSTAN LES PUEDO REGALAR UNA INVITACION GMAIL =)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:¿Como envio Clicks a una ventana?

Publicado por Geronimo (41 intervenciones) el 18/09/2005 22:58:21
No se sobre cual objeto queres que se ejecute el click cada 1 segundo, pero en principio deberias hacer lo siguiente

Private Sub Timer1_Timer()
Objeto_Click()
End Sub

De esa forma se ejecutará el evento click del objeto que indiques, cada 1 segundo.
Tenes que considerar que si el objeto se encuentra en una matriz de controles, deberás indicar tambien el index al cual corresponde el click:

Objeto(1)
Objeto(2)
Objeto(3)

Private Sub Timer1_Timer()
Objeto_Click(Index)
End Sub

Index puede ser 1,2,3... dependiendo del nro de objeto que contenga la matriz.

Espero que te sirva. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Como envio Clicks a una ventana?

Publicado por Danny (11 intervenciones) el 20/09/2005 21:44:17
MMM ESO NO ES LO QUE TRATO DE HACER...

A DONDE QUIERO ENVIAR CLICK NO ES UN OBJETO DE MI PROGRAMA, ES UN JUEGO COMPLETAMENTE EXTERNO AL PROGRAMA, SOLAMENTE DECEO SAVER LA FUNCION PARA SIMULAR UN CLICK EN EL SITIO DONDE SE ECUENTRE MI PUNTERO.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Es esto?

Publicado por Zoto (41 intervenciones) el 20/09/2005 22:44:35
Hola Danny.

Por lo que veo intentas hacer una herramienta para un juego on-line... (o al menos así creo). Si no estoy equivocado, entonces te doy un aviso:
Es muy posible que no funcione este programa (es decir, que el click no tenga efecto en el juego) porque muchas veces las acciones del juego se pasan mediante códigos internos al servidor del juego y eso evita que se creen sencillas herramientas como esta... Aunque puede este no ser el caso, nunca se sabe : )

En cuanto al código que pedías, pues bien, aquí te lo doy.
Este código, pegado en un módulo va a realizar un click izquierdo del ratón mediante código de Visual Basic, utilizando la API mouse_event.

Aun tengo más códigos posibles para esta API (click derecho, centro, mover el ratón...) así que si los necesitas dímelo.

Código en un módulo:

'------------------------
'CÓDIGO MÓDULO
'------------------------

'API mouse_event para llamar a una acción del ratón

Public Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)

'Constantes para mouse_event:
Public Const MOUSEEVENTF_LEFTDOWN = &H2 'Evento LeftDown
Public Const MOUSEEVENTF_LEFTUP = &H4 'Evento LeftUp

Public Sub LeftClick()
'Click Izquierdo con ratón
On Error GoTo error
LeftDown
LeftUp
Exit Sub
error: MsgBox Err.Description, vbExclamation, "Error"
End Sub

Public Sub LeftDown()
'Evento LeftDown del ratón
On Error GoTo error
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
Exit Sub
error: MsgBox Err.Description, vbExclamation, "Error"
End Sub

Public Sub LeftUp()
'Evento LeftUp del ratón
On Error GoTo error
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
Exit Sub
error: MsgBox Err.Description, vbExclamation, "Error"
End Sub

'------------------------
'CÓDIGO MÓDULO
'------------------------

Uso del código:

Simplemente, escribiendo llamando a la función LeftClick se va a realizar
un click izquierdo.
Por lo tanto, lo que debes incluir como instrucción en el lugar del código
donde se deba ejecutar el click izquierdo, es:

LeftClick

En tu caso:

Private Sub Timer1_Timer()
LeftClick 'Click izquierdo del ratón
End Sub

________________________________

Bueno, espero que fuera esto lo que andabas buscando y te deseo suerte a ver si el juego "se lo traga" ; )

Hasta otra,

Zoto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Es esto?

Publicado por Danny (11 intervenciones) el 23/09/2005 03:03:16
SI GRACIAS, ESTO ES LO QUE QUIERO...

ME GUSTARIA QUE ME DIJERAS DE DONDE PUEDO OBTENER MAS CODIGOS PARA EL PUNTERO.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Más código

Publicado por Zoto (41 intervenciones) el 24/09/2005 00:48:00
Hola Danny.

Vuelvo a ser yo, Zoto.
Como te dije, aun tengo más código referente a lo que pides.
Así que lo he escrito aquí para que lo pegues en un MÓDULO.

Simplemente, deberás llamar a los procedimientos del código,
el cual he comentado bastante.

Aquí te lo doy.

Pega esto en un MÓDULO:

'==============================================
'==============================================
'CÓDIGO PARA EL MOUSE
'VISUAL BASIC 6.0

'Escrito por Zoto, para lawebdelprogramador.com

'Puedes usar este código libremente en tus programas
'Incluyendo este encabezado.
'==============================================
'==============================================

'===========
'APIs
'===========

Public Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long) 'Para acciones de cursor (clicks)
Public Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long 'Para posicionar cursor
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long 'Para obtener posición del cursor
Public Declare Function ShowCursor& Lib "user32" (ByVal bShow As Long) 'Para mostrar el cursor y ocultarlo
Public Declare Function SwapMouseButton Lib "user32" (ByVal bSwap As Long) As Long 'Para intercambiar los botones del Mouse

'===========
'Constantes
'===========

Public Const MOUSEEVENTF_LEFTDOWN = &H2 'Constante para la API mouse_event: Evento LeftDown
Public Const MOUSEEVENTF_LEFTUP = &H4 'Constante para la API mouse_event: Evento LeftUp
Public Const MOUSEEVENTF_MIDDLEDOWN = &H20 'Constante para la API mouse_event: Evento MiddleDown
Public Const MOUSEEVENTF_MIDDLEUP = &H40 'Constante para la API mouse_event: Evento MiddleUp
Public Const MOUSEEVENTF_RIGHTDOWN = &H8 'Constante para la API mouse_event: Evento RightDown
Public Const MOUSEEVENTF_RIGHTUP = &H10 'Constante para la API mouse_event: Evento RightUp
Public Const MOUSEEVENTF_MOVE = &H1 'Constante para la API mouse_event: Evento Move

'===========
'Tipos
'===========

Public Type POINTAPI 'Tipo de datos necesario para la API GetCursorPos (para coordenadas)
X As Long
Y As Long
End Type

'============================================
'Procedimientos para el control del mouse
'============================================

Public Sub MoveMouse(X As Integer, Y As Integer)
'Mover el cursor a las coordenadas dados
On Error GoTo error
SetCursorPos X, Y
Exit Sub
error: MsgBox Err.Description, vbExclamation, "Error"
End Sub

Function MousePosition(X As Integer, Y As Integer)
'Devuelve las coordenadas del cursor (por referencia)
On Error GoTo error
If Index = 0 Then
MousePosition = Mid$(Str$(Mouse.X), 2, Len(Str$(Mouse.X)) - 1)
MousePosition = MousePosition + "," + Str$(Mouse.Y)
End If
Exit Function
error: MsgBox Err.Description, vbExclamation, "Error"
End Function

Public Sub LeftClick()
'Realiza un Click izquierdo
On Error GoTo error
LeftDown
LeftUp
Exit Sub
error: MsgBox Err.Description, vbExclamation, "Error"
End Sub

Public Sub LeftDown()
'Realiza Evento LeftDown del Mouse
On Error GoTo error
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
Exit Sub
error: MsgBox Err.Description, vbExclamation, "Error"
End Sub

Public Sub LeftUp()
'Realiza Evento LeftUp del Mouse
On Error GoTo error
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
Exit Sub
error: MsgBox Err.Description, vbExclamation, "Error"
End Sub

Public Sub MiddleClick()
'Realiza un click con el botón del medio del Mouse
On Error GoTo error
MiddleDown
MiddleUp
Exit Sub
error: MsgBox Err.Description, vbExclamation, "Error"
End Sub

Public Sub MiddleDown()
'Realiza Evento MiddleDown del Mouse
On Error GoTo error
mouse_event MOUSEEVENTF_MIDDLEDOWN, 0, 0, 0, 0
Exit Sub
error: MsgBox Err.Description, vbExclamation, "Error"
End Sub

Public Sub MiddleUp()
''Realiza Evento MiddleUp del Mouse
On Error GoTo error
mouse_event MOUSEEVENTF_MIDDLEUP, 0, 0, 0, 0
Exit Sub
error: MsgBox Err.Description, vbExclamation, "Error"
End Sub

Public Sub RightClick()
'Realiza un click derecho
On Error GoTo error
RightDown
RightUp
Exit Sub
error: MsgBox Err.Description, vbExclamation, "Error"
End Sub

Public Sub RightDown()
'Realiza Evento RightDown del Mouse
On Error GoTo error
mouse_event MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0
Exit Sub
error: MsgBox Err.Description, vbExclamation, "Error"
End Sub

Public Sub RightUp()
'Realiza Evento RightUp del Mouse
On Error GoTo error
mouse_event MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0
Exit Sub
error: MsgBox Err.Description, vbExclamation, "Error"
End Sub

Public Sub HideMouse()
'Esconde el cursor
On Error GoTo error
ShowCursor (bShow = False)
Exit Sub
error: MsgBox Err.Description, vbExclamation, "Error"
End Sub

Public Sub ShowMouse()
'Muestra el cursor
On Error GoTo error
ShowCursor (bShow = True)
Exit Sub
error: MsgBox Err.Description, vbExclamation, "Error"
End Sub

Public Sub SwapMouse()
'Intercambia los botones del cursor (izquierdo por derecho e izquierdo por derecho)
'Para restaurar los valores, volver a realizar la función
Dim res As Long
res = SwapMouseButton(True)
End Sub

'==============================================
'==============================================
'FIN DEL CÓDIGO
'==============================================
'==============================================

Bueno, pues hasta aquí termina el código para controlar el Mouse.

Espero que te sirva mucho, Danny y hasta la próxima.

Zoto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Más código

Publicado por Federico (35 intervenciones) el 09/07/2009 23:24:29
Como hago para saber si ya de antemano estan invertidos los botones izquierdo-derecho del mouse habiendo utilizado la funcion SwapMouseButton
No puedo guardar el estado en un archivo ya que desde el panel de control de windows en propiedades del mouse pueden ejecutar esa accion y mi programa no lo detectaria.. es por es que necesitaria una funcion para analizar el estado del mouse(invertidos o no)

Muchas Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar