Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: 50l3r en 6 Junio 2009, 15:02 PM

Título: Pulsando teclas con visual basic
Publicado por: 50l3r en 6 Junio 2009, 15:02 PM
Quiero realizar un mini proyecto para mi uso personal el cual haga esto

Dejo el programa encendido

Cuando yo presione f10 el programa se encienda y empieze a dar un bucle de clicks de raton

Cuando le de al f11 que se detenga el proyecto


Como haria para poder hacer tal cosa? es decir, el dar clicks izquierdos con un bucle

gracias
Título: Re: Pulsando teclas con visual basic
Publicado por: Spider-Net en 6 Junio 2009, 15:29 PM
Mediante la API mouse_event

Código (vb) [Seleccionar]
Private Declare Sub mouse_event Lib "user32" Alias "mouse_event" (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_MIDDLEDOWN = &H20
Private Const MOUSEEVENTF_MIDDLEUP = &H40
Private Const MOUSEEVENTF_MOVE = &H1
Private Const MOUSEEVENTF_RIGHTDOWN = &H8
Private Const MOUSEEVENTF_RIGHTUP = &H10


Llamada:
Código (vb) [Seleccionar]
mouse_event MOUSEEVENTF_LEFTDOWN,100,100,0,0

Harías click con el botón izquierdo en la posición (x,y) (100,100)

Saludos
Título: Re: Pulsando teclas con visual basic
Publicado por: 50l3r en 6 Junio 2009, 15:31 PM
Código (vb) [Seleccionar]

Const KEYEVENTF_KEYUP = &H2
Const KEYEVENTF_EXTENDEDKEY = &H1


Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
     ByVal bScan As Byte, _
     ByVal dwFlags As Long, _
     ByVal dwExtraInfo As Long)



Sub Pulsar_Tecla(vbKeyLButton As Long)

     Call keybd_event(vbKeyLButton, 0, 0, 0)

     Call keybd_event(vbKeyLButton, 0, KEYEVENTF_KEYUP, 0)

End Sub


Private Sub Timer1_Timer()
Call Pulsar_Tecla
End Sub



Por ahora he hecho eso, pero me da error en el timer cuando llamo a la funcion pulsar tecla
Título: Re: Pulsando teclas con visual basic
Publicado por: Spider-Net en 6 Junio 2009, 15:40 PM
Código (vb) [Seleccionar]
Private Declare Function Getasynckeystate Lib "user32" Alias "GetAsyncKeyState" (ByVal VKEY As Long) As Integer
Const WM_NCLBUTTONDOWN = &HA1

Private Sub Timer1_Timer()
On Error Resume Next
Dim keystate As Long

keystate = Getasynckeystate(vbKeyF10)
If (keystate And &H1) = &H1 Then
    MsgBox "Has pulsado F10"
End If
End Sub


Saludos!
Título: Re: Pulsando teclas con visual basic
Publicado por: 50l3r en 6 Junio 2009, 15:46 PM
eso seria una parte del codigo pero aun estoy por la pulsacion del mouse:

he cojido este codigo de recursos vb:
Código (vb) [Seleccionar]

' Constantes para las teclas y otros

Const KEYEVENTF_KEYUP = &H2
Const KEYEVENTF_EXTENDEDKEY = &H1


'Declaración del Api keybd_event para la presión de tecla

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
    ByVal bScan As Byte, _
    ByVal dwFlags As Long, _
    ByVal dwExtraInfo As Long)



Sub Pulsar_Tecla(Tecla As Long)

    Call keybd_event(Tecla, 0, 0, 0)

    Call keybd_event(Tecla, 0, KEYEVENTF_KEYUP, 0)

End Sub

' Presiona la tecla Tab
Private Sub Timer1_Timer()
Call Pulsar_Tecla([b]vbKeyTab[/b])
End Sub


el vbkeytab lo cambio por chr(1) o vbkeylbutton y no me funciona me da este error:

con chr(1): type mysmatch

con vbkeylbutton: no ace nada


ayuda plis
Título: Re: Pulsando teclas con visual basic
Publicado por: Spider-Net en 6 Junio 2009, 15:54 PM
Eh?? Pero estás intentando enviar las pulsaciones del mouse con la API keybd_event???

Esa API es para los eventos del teclado no del ratón :S. Por eso pensé que lo que intentabas era detectar que se había pulsado la tecla F10 :s

Lo del ratón ya te he puesto arriba la API que tienes que usar mouse_event y también te he puesto un ejemplo de uso, que más quieres?  :huh:

PD: vbkeylbutton no es, es vbKeyLeft, y esa es la flechita de dirección izquierda del teclado no del ratón, no puedes usar la api keybd_event para capturar eventos del ratón, no tiene sentido.

Saludos.
Título: Re: Pulsando teclas con visual basic
Publicado por: 50l3r en 6 Junio 2009, 16:04 PM
okey thanks, me pondre con esa api  :D
Título: Re: Pulsando teclas con visual basic
Publicado por: h0oke en 6 Junio 2009, 17:33 PM
Mira este code lo hice recien...  :D
Me hiciste acordar a algo que quería hacer en mis tiempo de juego  :-( y nunca supe como hacerlo, hasta que bueno hoy en día ... :-(

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 Sub Form_Load()
Text1.Text = "" 'Para configurar los intervalos de clicks
Timer1.Enabled = False
Timer2.Enabled = True
End Sub

Private Sub Timer1_Timer()
   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 Timer2_Timer()
If GetKeyState(vbKeyF10) And KEY_PRESSED Then
   MsgBox "Apretaste f10!"
   Timer1.Interval = Val(Text1.Text)'Lee el valor del textbox en MS
   Timer1.Enabled = True
ElseIf GetKeyState(vbKeyF11) And KEY_PRESSED Then
   MsgBox "Apretaste f11!"
   Timer1.Enabled = False
End If
End Sub
Título: Re: Pulsando teclas con visual basic
Publicado por: seba123neo en 6 Junio 2009, 20:30 PM
Hola, mejor usa RegistrerHotKey y UnRegistrerHotKey asi no usas Timer...busca que hay en internet...

saludos.
Título: Re: Pulsando teclas con visual basic
Publicado por: h0oke en 6 Junio 2009, 20:32 PM
Cita de: seba123neo en  6 Junio 2009, 20:30 PM
Hola, mejor usa RegistrerHotKey y UnRegistrerHotKey asi no usas Timer...busca que hay en internet...

saludos.

Ok me documentaré sobre eso.  ::)
Título: Re: Pulsando teclas con visual basic
Publicado por: 50l3r en 7 Junio 2009, 10:52 AM
yo necesito el timer ya que mi fin es poder invitar a todos mis amigos de tuenti en menos de 1 segundo sin dar clicks jeje y ya lo consegui, ahora aqui os dejo el code, lo pondre como programa, lo arreglare un poquito y demas jj

Código (vb) [Seleccionar]
Private Declare Function Getasynckeystate Lib "user32" Alias "GetAsyncKeyState" (ByVal VKEY As Long) As Integer
Const WM_NCLBUTTONDOWN = &HA1

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_MIDDLEDOWN = &H20
Private Const MOUSEEVENTF_MIDDLEUP = &H40
Private Const MOUSEEVENTF_MOVE = &H1
Private Const MOUSEEVENTF_RIGHTDOWN = &H8
Private Const MOUSEEVENTF_RIGHTUP = &H10
Private Sub Text1_change()
If Not IsNumeric(Text1.Text) Then MsgBox "solo numeros", vbCritical, "error"
End Sub


Private Sub Timer1_Timer()

Call mouse_event(MOUSEEVENTF_LEFTDOWN, 100, 100, 0, 0)
Call mouse_event(MOUSEEVENTF_LEFTUP, 100, 100, 0, 0)

End Sub

Private Sub Timer2_Timer()
On Error Resume Next
Dim keystate As Long
Dim keystate2 As Long

keystate = Getasynckeystate(vbKeyF6)
keystate2 = Getasynckeystate(vbKeyF7)

If (keystate And &H1) = &H1 Then
Timer1.Interval = Text1.Text
Exit Sub
End If

If (keystate2 And &H1) = &H1 Then
Timer1.Interval = 0
Exit Sub
End If


End Sub


Como solo pulsando no hacia la accion, tenia que pulsar y soltar asi que lo agregue en el timer, luego en el mismo programa puedo especificar cada cuanto tiempo quiero hacer el bucle de clicks

por cierto, como se haria para que en vez de estar minimizado pasase a la barra de tareas que es mas comodo?

gracias
Título: Re: Pulsando teclas con visual basic
Publicado por: h0oke en 7 Junio 2009, 15:51 PM
Tal vez esto te sirva de ayuda link (http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/81.htm)