Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: 45m0d3u5 en 11 Noviembre 2008, 19:48 pm



Título: Clickeador
Publicado por: 45m0d3u5 en 11 Noviembre 2008, 19:48 pm
Hola estimados(as):

Desde hace algun tiempo ando buscando alguna guia para realizar un programa que haga clicks de forma automatica.
La idea sería poder setear las coordenadas en las que haga los clicks y poner un timer o algo asi para definir cuando debe hacer click.
Me han dicho que en vb se puede hacer... alguien me podría dar una mano? alguna idea ...
Gracias de antemano


Título: Re: Clickeador
Publicado por: Dessa en 11 Noviembre 2008, 21:11 pm
Hola, fijate si te puede servir este ejemplo:
Código:

Option Explicit

Private Declare Function FindWindow _
        Lib "USER32" _
        Alias "FindWindowA" _
       (ByVal lpClassName As String, _
        ByVal lpWindowName As String) As Long
       
Private Declare Function FindWindowEx _
        Lib "USER32" _
        Alias "FindWindowExA" _
       (ByVal hWnd1 As Long, _
        ByVal hWnd2 As Long, _
        ByVal lpsz1 As String, _
        ByVal lpsz2 As String) As Long

Private Declare Function PostMessage _
        Lib "USER32" _
        Alias "PostMessageA" _
       (ByVal Hwnd As Long, _
        ByVal wMsg As Long, _
        ByVal wparam As Long, _
        ByVal lparam As Long) As Long

Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Const WM_RBUTTONDOWN = &H204
Private Const WM_RBUTTONUP = &H205

Private Declare Function GetWindowRect Lib "USER32" _
(ByVal Hwnd As Long, lpRect As RECT) As Long

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Declare Function SetCursorPos Lib "USER32" _
(ByVal X As Long, ByVal Y As Long) As Long

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)

Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Private Const MOUSEEVENTF_RIGHTDOWN = &H8
Private Const MOUSEEVENTF_RIGHTUP = &H10

Dim Hndl As String _


Private Sub Command1_Click()


Timer1.Enabled = False

Shell "notepad", vbNormalFocus

Clipboard.Clear
Clipboard.SetText "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

Hndl = FindWindow("notepad", vbNullString)
Hndl = FindWindowEx(Hndl, 0, "edit", vbNullString)

Call PostMessage(Hndl, WM_RBUTTONDOWN, 0, 0)
Call PostMessage(Hndl, WM_RBUTTONUP, 0, 0)

Timer1.Enabled = True

End Sub

Private Sub Timer1_Timer()

Hndl = FindWindow("#32768", vbNullString)

If Hndl <> 0 Then

Dim TR As RECT
Call GetWindowRect(Hndl, TR)

Me.Cls
Me.Print TR.Right - TR.Left & "   " & TR.Bottom - TR.Top    ' tamaño de la ventana
Me.Print TR.Left & "   " & TR.Top                           ' posic x-y de la ventana


Me.Print _
TR.Left + (TR.Right - TR.Left) * 50 / 100 _
& "   " & _
TR.Top + (TR.Bottom - TR.Top) * 50 / 100


SetCursorPos TR.Left + (TR.Right - TR.Left) * 50 / 100, _
             TR.Top + (TR.Bottom - TR.Top) * 55 / 100


Dim PosX As Long: Dim PosY As Long
Call mouse_event(MOUSEEVENTF_RIGHTDOWN, PosX, PosY, 0, 0)
Call mouse_event(MOUSEEVENTF_RIGHTUP, PosX, PosY, 0, 0)

Timer1.Enabled = False

End If

End Sub



PD: Siempre que se pueda (a veces no es posible) ,es mejor llegar al evento por Handlle (como en Command1) y no por posicion (como en Timer1), saludos

EDIT: Me olvide del Load

Código:

Private Sub Form_Load()

Timer1.Enabled = False
Timer1.Interval = 100
Command1.Caption = "Click"

End Sub




Título: Re: Clickeador
Publicado por: 45m0d3u5 en 11 Noviembre 2008, 22:06 pm
Muchas gracias ... voy a revisar  ::)


Título: Re: Clickeador
Publicado por: seba123neo en 11 Noviembre 2008, 23:26 pm
Hola, por ejemplo con esto haces click cada 3 segundos en la coordenada indicada...

Código
  1. Option Explicit
  2. Private Declare Function SetCursorPos Lib "USER32" (ByVal X As Long, ByVal Y As Long) As Long
  3. Private Declare Sub mouse_event Lib "USER32" _
  4.                        (ByVal dwFlags As Long, _
  5.                        ByVal dx As Long, _
  6.                        ByVal dy As Long, _
  7.                        ByVal cButtons As Long, _
  8.                        ByVal dwExtraInfo As Long)
  9. Private Const MOUSEEVENTF_LEFTDOWN = &H2
  10. Private Const MOUSEEVENTF_LEFTUP = &H4
  11.  
  12. Private Sub Timer1_Timer()
  13. SetCursorPos 50, 800
  14. Call MouseLeftClick(50, 800)
  15. End Sub
  16.  
  17. Public Sub MouseLeftClick(ByVal PosX As Long, ByVal PosY As Long)
  18. Call mouse_event(MOUSEEVENTF_LEFTDOWN, PosX, PosY, 0, 0)
  19. Call mouse_event(MOUSEEVENTF_LEFTUP, PosX, PosY, 0, 0)
  20. End Sub
  21.  
  22. Private Sub Form_Load()
  23. Timer1.Interval = 3000
  24. End Sub

saludos.


Título: Re: Clickeador
Publicado por: 45m0d3u5 en 12 Noviembre 2008, 03:28 am
muchas gracias suena bien :) voy a revisar también  :rolleyes:


Título: Re: Clickeador
Publicado por: WestOn en 12 Noviembre 2008, 18:09 pm
Esta bastante bien, yo tambien le voy a echar un vistazo :laugh:


Título: Re: Clickeador
Publicado por: AlbertoBSD en 12 Noviembre 2008, 20:21 pm
Estan bien los codigos, voy a tomar uno para portarlo a C.

Cual es el proposito que tienen ustedes para los click ? Publicidad $$$ ?


Título: Re: Clickeador
Publicado por: s E t H en 12 Noviembre 2008, 22:42 pm
yo le veo mas utilidad en juegos, para publicidad podes simular que visitas los links sin necesidad de hacerlo realmente y ocupar el mouse


Título: Re: Clickeador
Publicado por: AlbertoBSD en 12 Noviembre 2008, 22:45 pm
para publicidad podes simular que visitas los links sin necesidad de hacerlo realmente y ocupar el mouse

A claro el metodo lo conozco, por eso yo preguntaba que para que eran lo de los click, y ahora que lo dices, lo de los juegos no esta nada mal.

Saludos.


Título: Re: Clickeador
Publicado por: Dessa en 12 Noviembre 2008, 23:08 pm
Un poco mas de code GetCursorPos (para conocer la ubicacion del puntero) y SetCursorPos ( para colocar el puntero en la posición x,y)

Código:

Option Explicit

Private Declare Function GetCursorPos Lib "user32" _
(lpPoint As POINTAPI) As Long

Private Declare Function SetCursorPos Lib "user32" _
(ByVal X As Long, ByVal Y As Long) As Long

Private Type POINTAPI
    X As Long
    Y As Long
End Type

Private Sub Form_Load()

Timer1.Interval = 30

Command1.Caption = "SetCursorPos"

End Sub

Private Sub Command1_Click()
     
Dim X1 As Long
Dim Y1 As Long
     
X1 = (Screen.Width / Screen.TwipsPerPixelX) / 2
Y1 = (Screen.Height / Screen.TwipsPerPixelY) / 2

SetCursorPos X1, Y1 ' Coloca el puntero en la posición x,y

End Sub

Private Sub Timer1_Timer()
   
    Dim Point As POINTAPI
   
    GetCursorPos Point ' Obtiene la posición actual del cursos en coordenandas x,y
   
    Me.Cls
    Me.Print
    Me.Print "            X: " & Point.X ' Muestra el valor actual de X en pixels
    Me.Print "            X: " & Point.X * Screen.TwipsPerPixelX ' Muestra X twips
    Me.Print
    Me.Print "            Y: " & Point.Y  ' Muestra el valor actual de Y en pixels
    Me.Print "            Y: " & Point.Y * Screen.TwipsPerPixelY ' Muestra  Y  Muestra X twips
   
    SetCursorPos Point.X, Point.Y ' Coloca el puntero en la posición x,y

End Sub



PD: si el clicck es para un ventana o un control de una aplicación externa tal vez sea mas directo llagar al Hwn. saludos



Título: Re: Clickeador
Publicado por: 45m0d3u5 en 13 Noviembre 2008, 12:09 pm
Muchas gracias a todos por las respuestas, la verdad es que andaba bastante perdido :)
además se djo florecer la imaginacion xD
Y la verdad pensaba usarlo como clickeador de juegos de esos tipicos que exigen mucho tiempo para lvlear... claro que el clickeador viene como una parte de un set de cosas... pero dea poco :-X

"para publicidad podes simular que visitas los links sin necesidad de hacerlo realmente y ocupar el mouse"

Seth
como se hace eso?? aprovechando que lo mencionas :)


Título: Re: Clickeador
Publicado por: katanaia en 13 Noviembre 2008, 14:28 pm

como se hace eso?? aprovechando que lo mencionas :)

Conectandote con un winsock (o similar) al enlace que te manda cuando clickeas, supongo.


Título: Re: Clickeador
Publicado por: s E t H en 14 Noviembre 2008, 19:02 pm
usando los controles winsock, inet, webbrowser, lo que te guste..