Libero Macro y mejoremoslo

Iniciado por BahiereTTi, 13 Julio 2011, 00:14 AM

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

BahiereTTi

Bueno, vi que acá son toda gente buena y hacker...

Entonces, les libero mi macro, y quiero mejorarlo...

Código (vb) [Seleccionar]
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
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 MOUSELEFTDOWN = &H2 '  left button down /This is actually MOUSEEVENTF_LEFTDOWN
Private Const MOUSELEFTUP = &H4 '  left button up /This is actually MOUSEEVENTF_LEFTUP
Private Const KEY_TOGGLED As Integer = &H1
Private Const KEY_PRESSED As Integer = &H1000
Private Const MOUSEEVENTF_MOVE = &H1
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer


Option Explicit

'   * Colocar un control Timer
'-------------------------------------------------

'Estructura de coordenadas para el api GetCursorPos
Private Type POINTAPI
   x As Long
   y As Long
End Type


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

Dim Mouse As POINTAPI

Private Sub Form_Load()
6
   Me.FontSize = 10
   Text1.Text = "100" 'Para configurar los intervalos de clicks
Timer1.Enabled = False
Timer2.Enabled = True
End Sub

Private Sub Timer1_Timer()

   'Ejecutamos la función y recuperamos la posicion del cursor
   Call GetCursorPos(Mouse)

   ' limpia el form
   Me.Cls
   
   Me.Print "Posicion del cursor :"
   'Imprimimos las cordenadas X e Y devueltas por el api
   Me.Print "X:" + Str$(Mouse.x) + vbCrLf + "Y:" + Str$(Mouse.y)
If Mouse.x < 1000 Then
Dim y As String
Dim x As String
y = Text2.Text
x = Text3.Text

 mouse_event MOUSELEFTDOWN, 0, 0, 0, 0 'left button goes down
   mouse_event MOUSELEFTUP, 0, 0, 0, 0 'left button comes up
    mouse_event MOUSELEFTDOWN, 0, 0, 0, 0 'left button goes down
   mouse_event MOUSELEFTUP, 0, 0, 0, 0 'left button comes up

End If
End Sub


Private Sub Timer2_Timer()
If GetKeyState(vbKeyF10) And KEY_PRESSED Then

   Timer1.Interval = Val(Text1.Text) 'Lee el valor del textbox en MS
   Timer1.Enabled = True
ElseIf GetKeyState(vbKeyF11) And KEY_PRESSED Then
 
   Timer1.Enabled = False
   ElseIf GetKeyState(vbKeyF9) And KEY_PRESSED Then
   Timer4.Enabled = True
   ElseIf GetKeyState(vbKeyF8) And KEY_PRESSED Then

   Timer1.Enabled = False
   ElseIf GetKeyState(vbKeyF7) And KEY_PRESSED Then
   Timer5.Enabled = True
   ElseIf GetKeyState(vbKeyF6) And KEY_PRESSED Then
 
   Timer1.Enabled = False
   ElseIf GetKeyState(vbKeyF9) And KEY_PRESSED Then
   Timer6.Enabled = True
End If
End Sub

Private Sub Timer3_Timer()


End Sub

Private Sub Timer4_Timer()
   'Ejecutamos la función y recuperamos la posicion del cursor
   Call GetCursorPos(Mouse)

   ' limpia el form
   Me.Cls
   
   Me.Print "Posicion del cursor :"
   'Imprimimos las cordenadas X e Y devueltas por el api
   Me.Print "X:" + Str$(Mouse.x) + vbCrLf + "Y:" + Str$(Mouse.y)
If Mouse.x < 1000 Then
Dim y As String
Dim x As String
y = Text2.Text
x = Text3.Text

 mouse_event MOUSELEFTDOWN, 0, 0, 0, 0 'left button goes down
   mouse_event MOUSELEFTUP, 0, 0, 0, 0 'left button comes up
    mouse_event MOUSELEFTDOWN, 0, 0, 0, 0 'left button goes down
   mouse_event MOUSELEFTUP, 0, 0, 0, 0 'left button comes up

 mouse_event MOUSELEFTDOWN, 0, 0, 0, 0 'left button goes down
   mouse_event MOUSELEFTUP, 0, 0, 0, 0 'left button comes up
    mouse_event MOUSELEFTDOWN, 0, 0, 0, 0 'left button goes down
   mouse_event MOUSELEFTUP, 0, 0, 0, 0 'left button comes up


 mouse_event MOUSELEFTDOWN, 0, 0, 0, 0 'left button goes down
   mouse_event MOUSELEFTUP, 0, 0, 0, 0 'left button comes up
    mouse_event MOUSELEFTDOWN, 0, 0, 0, 0 'left button goes down
   mouse_event MOUSELEFTUP, 0, 0, 0, 0 'left button comes up


 mouse_event MOUSELEFTDOWN, 0, 0, 0, 0 'left button goes down
   mouse_event MOUSELEFTUP, 0, 0, 0, 0 'left button comes up
    mouse_event MOUSELEFTDOWN, 0, 0, 0, 0 'left button goes down
   mouse_event MOUSELEFTUP, 0, 0, 0, 0 'left button comes up


 mouse_event MOUSELEFTDOWN, 0, 0, 0, 0 'left button goes down
   mouse_event MOUSELEFTUP, 0, 0, 0, 0 'left button comes up
    mouse_event MOUSELEFTDOWN, 0, 0, 0, 0 'left button goes down
   mouse_event MOUSELEFTUP, 0, 0, 0, 0 'left button comes up


 mouse_event MOUSELEFTDOWN, 0, 0, 0, 0 'left button goes down
   mouse_event MOUSELEFTUP, 0, 0, 0, 0 'left button comes up
    mouse_event MOUSELEFTDOWN, 0, 0, 0, 0 'left button goes down
   mouse_event MOUSELEFTUP, 0, 0, 0, 0 'left button comes up

End Sub

Private Sub Timer5_Timer()
   'Ejecutamos la función y recuperamos la posicion del cursor
   Call GetCursorPos(Mouse)

   ' limpia el form
   Me.Cls
   
   Me.Print "Posicion del cursor :"
   'Imprimimos las cordenadas X e Y devueltas por el api
   Me.Print "X:" + Str$(Mouse.x) + vbCrLf + "Y:" + Str$(Mouse.y)


 If GetAsyncKeyState(2) = -32767 Then 'comprueba si hacen click derecho
       SendKeys "{u}"
        SendKeys "{u}"
         SendKeys "{u}" 'si lo hacen manda la letra u
   End If
   
End Sub



Ideas:
Bueno, lo que tenía pensado era que al potear no haya intervalo...

También que te haga un autoclick en una coordenada (La que pongas en un textbox) pero que no valla el mouse hacia la coordenada, si no que sea auto click sin mover el mouse, porque mi auto click es feo, lleva el mouse hacia la coordenada, entonces lo saque.



Las 2 ideas no me salieron perfectas como quería...

Asique, pido si me pueden orientar, o si no darme lo codes que preferiría mejor interpretarlos así aprendo.


Saludos!