(AYUDA) Crear un ¿auto-tip?

Iniciado por nhydawn, 16 Julio 2016, 16:34 PM

0 Miembros y 2 Visitantes están viendo este tema.

nhydawn

Hola hola gente, voy a ir directo al grano, esto intentado crear/programar un auto-tip (nombre que se me ocurrio porque no tengo idea de como se llama/llamaria) la idea es crear un programita sencillo que al presionar F8 se inicia y comienza a auto-tipear las letras Q y W de formar rapida y repetida hasta que se presiona F9 para detener el programa, estuve viendo tutoriales de autoclicks porque supuse que es bastante similar, pero no puedo lograrlo, ¿es posible que me ayuden? Creo que seria un codigo bastante sencillo  ;D pero la verdad no tengo idea de programación  :xD espero que puedan ayudarme, saludos  :rolleyes:

XresH

Holas, sino sabes programar no podemos guiarte en tu trabajo, ya que no vas a poder seguir ningun consejo ni idea, te facilito un enlace pero deberias buscar en google.

http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/24.htm


Y por aca algo de este foro que esta bastante bien por lo que vi.

https://foro.elhacker.net/programacion_vb/pulsando_teclas_con_visual_basic-t257211.0.html


Con este ejemplo podes detectar el codigo de la tecla, despues con un SendKeys podrias presionarla con la ref obtenida:
http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/24.htm


[ - Si eres programador y quieres que tus proyectos esten en mi blog(con o sin source), consúltame! - ]
Entra A Mi Blog De Programación | | Dudas en este post :| | >>Clic para ir al Post<<

nhydawn

Algo me dice que no va a ser facil  :P
Digamos, si me guio con una guia de la programación de un auto-click (es que de esto si encontre en youtube) y de alguna forma milagrosa lo modifico para que cumpla la misma funcion pero en vez de clickear, que tipee  Q y W. ¿Seria posible?  ¿o los codigos cambian totalmente?  :-\

nhydawn

Googleando un poco me tope con esto:

http://foro.elhacker.net/hacking_avanzado/pulsador_tecla_automatico-t354968.0.html

Pide lo mismo que yo, intente descargarlo para modificarlo con la tecla "Q" al menos, peeeeeeeero.. obviamente el link está caido, ¿alguien me daria una mano y me crea uno para que yo pueda modificarlo y aprender desde ahi?  ;D les estaria agradecido de por vida ;-)


nhydawn

¿Nadie?  :silbar: al menos una miniguia para hacerlo  :silbar: porfa  :rolleyes:

pkj

El caso es que las pulsaciones automáticas dan muchos problemas.
Ver la tecla pulsada es facil, pero pulsar una tecla en otro programa no suele serlo.

Esto sería la base de tu programa:

Puedes probarlo en un nuevo proyecto con 2 timer y un textbox (que puse para las pruebas).

Después de probarlo anula la línea que pone "Text1.SetFocus" y pruebalo, pero no te va a mandar teclas a otros programas.
Busca por ahí los diferentes modos de enviar pulsaciones que encuentres a ver si te van mejor que SendKeys y nos cuentas.

Código (vb) [Seleccionar]
Option Explicit

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Const constKeyDown = -32767


Private Sub Form_Load()
  'INTERVALO DE PULSACIONES
  Timer2.Enabled = False
  Timer2.Interval = 50
 
  'INTERVALO DE COMPROBACION DE TECLAS
  Timer1.Interval = 50
  Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
  Dim F8 As Integer
  Dim F9 As Integer
  ' COMPROBAMOS LAS TECLAS
  F8 = GetAsyncKeyState(vbKeyF8)
  F9 = GetAsyncKeyState(vbKeyF9)
  'SI SE HAN PULSADO HACEMOS LO QUE TOQUE
  If F8 <= constKeyDown Then
    'ENFOCAMOS AL TEXTBOX PARA QUE SE PULSEN AHI LAS TECLAS
    Text1.SetFocus
    ' Y ACTIVAMOS EL TIMER
    Timer2.Enabled = True
  End If
  If F9 <= constKeyDown Then
    'DESACTIVAMOS EL TIMER
    Timer2.Enabled = False
  End If
 
 
End Sub

Private Sub Timer2_Timer()
   'PUEDEN PULSARSE LAS 2 TECLAS A CADA VUELTA:
  'SendKeys "QW"
 
  ' O CADA CICLO UNA TECLA:
  ' VARIABLE QUE NO SE BORRA AL SALIR DE LA SUB
  Static Ultimaletra As String
  ' SEGUN LA ULTIMA PULSACION ELEGIMOS LA TECLA A PULSAR
  If Ultimaletra = "Q" Then
    SendKeys "W"
    Ultimaletra = "W"
  Else
    SendKeys "Q"
    Ultimaletra = "Q"
  End If
End Sub


Saludos


Eleкtro

#6
Cita de: ASOUKU en 16 Julio 2016, 16:34 PMauto-tip (nombre que se me ocurrio porque no tengo idea de como se llama/llamaria)

Para que puedas darle un nombre mejor, te digo que en todo caso más bien seria "auto-type", por que un "tip" es algo muy distinto que nada tiene que ver.

Veo que has buscado como hacer esto en otros lenguajes (por aquél post que has compartido), así que te pregunto: ¿realmente necesitas hacerlo en VB6?. Si el lenguaje te es indiferente entonces puedo mostrarte una manera facilisima e intuitiva utilizando mi librería gratuita ElektroKit, mediante VB.NET o C#.

También deberías aclarar si simplemente pretendes enviar pulsaciones del teclado sin más, o más bien pretendes adjuntar texto a la ventana de edición de un programa de terceros. Son dos cosas muy distintas con sus respectivas técnicas.

Saludos








nhydawn

#7
Muchas gracias por las respuestas, pkj gracias por el codigo, voy a intentar hacerlo funcionar  ;D

Elektro, no no para nada, cualquier lenguaje que me ayude a lograr lo que necesito me vendria bien, la idea es que las pulsaciones se envien a un juego, lo que estoy pidiendo en este post para no andar con rodeos es un "auto-pot" (pot=pociones) si no es mucha molestia, estaria buenisimo que me ayudes a programarlo como vos decis  ;D 

Eleкtro

#8
Cita de: ASOUKU en 18 Julio 2016, 07:26 AM
Muchas gracias por las respuestas, pkj gracias por el codigo, voy a intentar hacerlo funcionar  ;D

Elektro, no no para nada, cualquier lenguaje que me ayude a lograr lo que necesito me vendria bien, la idea es que las pulsaciones se envien a un juego, lo que estoy pidiendo en este post para no andar con rodeos es un "auto-pot" (pot=pociones) si no es mucha molestia, estaria buenisimo que me ayudes a programarlo como vos decis  ;D  

Entonces, si no he entendido mal, ¿quieres que mientras tú estás jugando al juego (es decir, mientras la ventana del juego está activa), cada "X" tiempo se pulse la tecla para tomar una poción?.

En ese caso lo podrías hacer de la siguiente manera:

1. Descarga la librería ElektroKit:

2. Utiliza un código parecido a este:
Imports System.Threading
Imports System.Threading.Thread
Imports System.Windows.Forms

Imports Elektro.Core.IO.Enums
Imports Elektro.Core.IO.Tools

Public Module Module1

    Public Sub Main()
        Console.Title = "Auto-Potion"

        Console.WriteLine("Press any key to start...")
        Console.ReadKey(intercept:=True)

        Module1.RunBot()
    End Sub

    <DebuggerStepperBoundary>
    Private Sub RunBot()
        ' Añadir tareas aquí.
        Dim potionAction As Action = Sub() Module1.TakePotion(TimeSpan.FromSeconds(3))
        Dim potionTask As New Task(potionAction)

        ' Iniciar tareas aquí (asincrónicamente).
        Console.Clear()
        Console.WriteLine("Bot is running...")
        potionTask.Start()

        ' Esperar sincrónicamente a que todas las tareas asincrónicas finalicen.
        Task.WaitAll({potionTask})
    End Sub

    <DebuggerStepThrough>
    Private Sub TakePotion(ByVal interval As TimeSpan)

        Dim success As Boolean
        Do While True
            Sleep(interval)
            success = (Keyboard.SendKey(Keys.F1, KeyBehavior.Press) = 2)
            If (success) Then
                Console.WriteLine("[{0}] Potion consumed.", DateTime.Now.ToLongTimeString())
            Else
                Environment.ExitCode = 1
                Environment.FailFast(String.Format("Not all keystrokes were sent in Method: '{0}()'.", New StackFrame(0).GetMethod.Name))
            End If
        Loop

    End Sub

End Module


Saludos








Eleкtro

#9
Hay un BUG en el foro que no me permite publicar el código de forma deseada ni modificar el post correctamente, así que lo siento, pero hago este doble post.
>>>
Con la misma librería puedes identificar "X" ventana si lo llegas a necesitar (para darle el foco o lo que quieras), y también puedes registrar teclas de acceo rápido (o system-wide hotkeys) para pausar el bot en cualquier momento, pero eso ya sería conveniente hacerlo en una GUI por el paradigma de eventos, lo que te he mostrado es una aplicación CLI escrita en VB.NET.

Saludos