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
Hola, fijate si te puede servir este ejemplo:
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
Private Sub Form_Load()
Timer1.Enabled = False
Timer1.Interval = 100
Command1.Caption = "Click"
End Sub
Muchas gracias ... voy a revisar ::)
Hola, por ejemplo con esto haces click cada 3 segundos en la coordenada indicada...
Option Explicit
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 Sub Timer1_Timer()
SetCursorPos 50, 800
Call MouseLeftClick(50, 800)
End Sub
Public Sub MouseLeftClick(ByVal PosX As Long, ByVal PosY As Long)
Call mouse_event(MOUSEEVENTF_LEFTDOWN, PosX, PosY, 0, 0)
Call mouse_event(MOUSEEVENTF_LEFTUP, PosX, PosY, 0, 0)
End Sub
Private Sub Form_Load()
Timer1.Interval = 3000
End Sub
saludos.
muchas gracias suena bien :) voy a revisar también :rolleyes:
Esta bastante bien, yo tambien le voy a echar un vistazo :laugh:
Estan bien los codigos, voy a tomar uno para portarlo a C.
Cual es el proposito que tienen ustedes para los click ? Publicidad $$$ ?
yo le veo mas utilidad en juegos, para publicidad podes simular que visitas los links sin necesidad de hacerlo realmente y ocupar el mouse
Cita de: s E t H en 12 Noviembre 2008, 22:42 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.
Un poco mas de code GetCursorPos (para conocer la ubicacion del puntero) y SetCursorPos ( para colocar el puntero en la posición x,y)
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
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 :)
Cita de: 45m0d3u5 en 13 Noviembre 2008, 12:09 PM
como se hace eso?? aprovechando que lo mencionas :)
Conectandote con un winsock (o similar) al enlace que te manda cuando clickeas, supongo.
usando los controles winsock, inet, webbrowser, lo que te guste..