Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: aaronduran2 en 24 Marzo 2008, 19:37 pm



Título: Simular pulsaciones del mouse
Publicado por: aaronduran2 en 24 Marzo 2008, 19:37 pm
Quisiera saber si hay alguna manera de simular pulsaciones del mouse con APIs. He intentado hacerlo con algunos ejemplos que he encontrado pero no soy capaz.

Gracias de antemano.


Título: Re: Simular pulsaciones del mouse
Publicado por: ((( SPAWN ))) en 24 Marzo 2008, 22:43 pm
Hola proba con esto

Código:
Private Declare Function PostMessageBynum Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long           'enviar mensajes al control
Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long    'posicionar el puntero del ratón
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long           'obtener la posición del control
Private Type RECT
         Left As Long
         Top As Long
         Right As Long
         Bottom As Long
End Type
Const WM_LBUTTONDOWN = &H201
Const WM_LBUTTONUP = &H202

Private Sub Command1_Click()
    MsgBox "HOLA"
End Sub

Private Sub Command2_Click()
Dim rsp As Long, PosX As Long, PosY As Long, PosXY As Long
Dim lpRect As RECT
    'conocer las posición del botón relativa a la pantalla, en pixels
    rsp = GetWindowRect(Command1.hwnd, lpRect)
    'colocar el ratón sobre el centro del botón
    PosX = lpRect.Left + ((lpRect.Right - lpRect.Left) / 2)
    PosY = lpRect.Top + ((lpRect.Bottom - lpRect.Top) / 2)
    rsp = SetCursorPos(PosX, PosY)
    'obtener la posicion del centro del control relativa al propio control,
    'en pixels
    'no es obligatorio, es para que las coordenadas recibidas en el mousedown
    'del control sean coherentes
    'la posicion y va en la palabra alta y la x en la baja
    PosXY = (PosY - lpRect.Top) * 65536 + (PosX - lpRect.Left)
    'simular el click del ratón
    rsp = PostMessageBynum(Command1.hwnd, WM_LBUTTONDOWN, 0&, PosXY)
    rsp = PostMessageBynum(Command1.hwnd, WM_LBUTTONUP, 0&, PosXY)
End Sub

Saludos.