elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Clickeador
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Clickeador  (Leído 6,033 veces)
45m0d3u5

Desconectado Desconectado

Mensajes: 8



Ver Perfil
Clickeador
« 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


En línea

Dessa


Desconectado Desconectado

Mensajes: 624



Ver Perfil
Re: Clickeador
« Respuesta #1 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




« Última modificación: 11 Noviembre 2008, 21:26 pm por Dessa » En línea

Adrian Desanti
45m0d3u5

Desconectado Desconectado

Mensajes: 8



Ver Perfil
Re: Clickeador
« Respuesta #2 en: 11 Noviembre 2008, 22:06 pm »

Muchas gracias ... voy a revisar  ::)
En línea

seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Clickeador
« Respuesta #3 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.
En línea

45m0d3u5

Desconectado Desconectado

Mensajes: 8



Ver Perfil
Re: Clickeador
« Respuesta #4 en: 12 Noviembre 2008, 03:28 am »

muchas gracias suena bien :) voy a revisar también  :rolleyes:
En línea

WestOn

Desconectado Desconectado

Mensajes: 272


El testamento Maya...


Ver Perfil
Re: Clickeador
« Respuesta #5 en: 12 Noviembre 2008, 18:09 pm »

Esta bastante bien, yo tambien le voy a echar un vistazo :laugh:
En línea

En mi cabeza existe una barrera espacio-tiempo de 4cm³. ¿Alguien sabe como eliminarla?.
                                                                                                                                                                                                                            
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Clickeador
« Respuesta #6 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 $$$ ?
En línea

s E t H

Desconectado Desconectado

Mensajes: 152


Ha tenido un sueño donde todos los pollos eran libres de cruzar una carretera sin tener que justificar sus actos.


Ver Perfil WWW
Re: Clickeador
« Respuesta #7 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
En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Clickeador
« Respuesta #8 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.
En línea

Dessa


Desconectado Desconectado

Mensajes: 624



Ver Perfil
Re: Clickeador
« Respuesta #9 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

En línea

Adrian Desanti
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines