Estoy buscando esto para vb6 (mouse move and click)

Iniciado por AnaCarolina28, 6 Enero 2015, 20:00 PM

0 Miembros y 1 Visitante están viendo este tema.

AnaCarolina28

este video de youtube muestra lo que yo busco, pero está hecho para el express.

[youtube=640,360]https://www.youtube.com/watch?v=eHZd0MvwmnQ[/youtube]

estoy buscando para el 6.0

Shell Root

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

okik

#2
Hola,
Para hacer eso necesitas recurrir a funciones  API de windows.

Para simular el evento del Clic del ratón has de llamar a la siguiente función:
Código (vb) [Seleccionar]

Private 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)


En este caso la constante que te interesa usar es:
Código (vb) [Seleccionar]
Const MOUSEEVENTF_LEFTDOWN = &H2 '  botón izquierdo presionado

Para llamar a mouse_event y simular el CLIC del ratón se hace de la siguiente manera:

Código (vb) [Seleccionar]
Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)


Para mover el cursor, es decir el puntero del ratón se usa la siguiente función:

Código (vb) [Seleccionar]
Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long


Y la forma de llamarlo es:
Código (vb) [Seleccionar]
Call SetCursorPos (X,Y)

Donde X e Y son las coordenadas en pixels del escritorio de windows. Así, si tu pantalla tiene una resolución de 1280x800 y quieres colocar el cursor justo en el centro de la pantalla pones:
Código (vb) [Seleccionar]
Call SetCursorPos((1280/2), (800/2))


Ejemplo de programa

- Crea un módulo
- Un control PictureBox
- Un control Timer
- Un control CommandButton

En el módulo pega lo siguiente:
Código (vb) [Seleccionar]
'Definición de la API para mover el cursor
Public Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long


'Definición de la API para los eventos del ratón
Private 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)
Const MOUSEEVENTF_MOVE = &H1 '  movimiento del mouse
Const MOUSEEVENTF_LEFTDOWN = &H2 '  botón izquierdo presionado
Const MOUSEEVENTF_LEFTUP = &H4 '  botón izquierdo soltado
Const MOUSEEVENTF_RIGHTDOWN = &H8 '  botón derecho presionado
Const MOUSEEVENTF_RIGHTUP = &H10 '  botón derecho soltado
Const MOUSEEVENTF_MIDDLEDOWN = &H20 '  botón central presionado
Const MOUSEEVENTF_MIDDLEUP = &H40 ' botón central soltado
Const MOUSEEVENTF_ABSOLUTE = &H8000 '  movimiento absoluto
Public Sub HacerClic()
'Simula el clic del boton izquierdo del ratón
Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
End Sub




En el Form pega lo siguiente:

Código (vb) [Seleccionar]
'Función API para determinar la posición de un control o formulario
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long


Dim ColorTiza As Integer
Dim PosPicture As RECT
Dim r As Variant
Dim X As Integer, Y As Integer
 
Private Sub Command1_Click()
Timer1.Enabled = True
End Sub

Private Sub Form_Load()
ColorTiza = 0 'Color blanco por defecto al abrir el programa
Timer1.Interval = 200
'Obtiene el centro del PictureBox
Call GetWindowRect(Picture1.hWnd, PosPicture)
X = PosPicture.Left + ((PosPicture.Right - PosPicture.Left) / 2)
Y = PosPicture.Top + ((PosPicture.Bottom - PosPicture.Top) / 2)

'Coloca el cursor en el centro del Picture
Call SetCursorPos(X, Y)


End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
Picture1.PSet (X, Y), QBColor(ColorTiza)
End If
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
Picture1.DrawWidth = 5
Picture1.Line -(X, Y), QBColor(ColorTiza)
End If
End Sub

Private Sub Timer1_Timer()
Call GetWindowRect(Picture1.hWnd, PosPicture)
r = (r + 0.5)
X = X + Cos(Y) * r
Y = Y + Sin(X) * r

'Mueve el cursor
Call SetCursorPos(X, Y)
'Simula el evento CLIC del ratón
Call HacerClic

'Para el proceso cuando el cursor se sale del control PictureBox
If X > PosPicture.Right Or X < PosPicture.Left Then Timer1.Enabled = False
If Y > PosPicture.Bottom Or Y < PosPicture.Top Then Timer1.Enabled = False

End Sub


Saludos