Programa que presiona automaticamente una tecla

Sé que existen programas con los que se puede crear un "macro" para que presione X tecla cada cierto tiempo (ej: F1 cada 10 segundos), pero me interesaría encontrar uno que hiciera eso pero cada cierto tiempo aleatorio dentro de unos parámetros establecidos. Es decir: que realize la acción no siempre a los mismos segundos, sino que actue dentro de un intervalo, por ejemplo: entre 60 y 120 segundos, por lo que un click lo haria a los 61 segundos y el otro lo podría hacer a los 99 o a los 76, etc...
También sería interesante que este intervalo pudiera ir modificándolo yo a mi antojo.

Si alguien puede ayudarme a encontrar un programa así, le estaría muy agradecido.

Saludos!
Pues programas no conozco, pero eso se puede programar en 5 minutos:
#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <ctime>
using namespace std;

void PulsarTecla(char Tecla)
{
    keybd_event(VkKeyScan(Tecla),0x9e,0 , 0); //Pulsamos una tecla (Letra)
}

void SoltarTecla(char Tecla)
{
    keybd_event(VkKeyScan(Tecla),0x9e, KEYEVENTF_KEYUP,0); // //Soltamos una tecla (Letra)
}

int main()
{
    DWORD min,max;
    char tecla;
    srand(time(0));

    cout<<"Introduce intervalo minimo (s): ";
    cin>>min;

    cout<<"Introduce intervalo maximo (s): ";
    cin>>max;

    cout<<"Introduce la tecla: ";
    cin>>tecla;

    min *= 1000; // pasar a milisegundos
    max *= 1000;

    while (1)
    {
        Sleep((rand() % max)+ min);
        PulsarTecla(tecla);
        SoltarTecla(tecla);
    }
    return 0;
}


Aquí lo tienes compilado:
https://dl.dropboxusercontent.com/u/69551225/Macro.exe

Solo funciona para letras/numeros. Si necesitas alguna tecla especial (F1 por ejemplo) avisame.
amchacon escribió:Pues programas no conozco, pero eso se puede programar en 5 minutos:
#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <ctime>
using namespace std;

void PulsarTecla(char Tecla)
{
    keybd_event(VkKeyScan(Tecla),0x9e,0 , 0); //Pulsamos una tecla (Letra)
}

void SoltarTecla(char Tecla)
{
    keybd_event(VkKeyScan(Tecla),0x9e, KEYEVENTF_KEYUP,0); // //Soltamos una tecla (Letra)
}

int main()
{
    DWORD min,max;
    char tecla;
    srand(time(0));

    cout<<"Introduce intervalo minimo (s): ";
    cin>>min;

    cout<<"Introduce intervalo maximo (s): ";
    cin>>max;

    cout<<"Introduce la tecla: ";
    cin>>tecla;

    min *= 1000; // pasar a milisegundos
    max *= 1000;

    while (1)
    {
        Sleep((rand() % max)+ min);
        PulsarTecla(tecla);
        SoltarTecla(tecla);
    }
    return 0;
}


Aquí lo tienes compilado:
https://dl.dropboxusercontent.com/u/69551225/Macro.exe

Solo funciona para letras/numeros. Si necesitas alguna tecla especial (F1 por ejemplo) avisame.


Joder, muchas gracias por el curro! :D Principalmente lo buscaba para usarlo en una tecla F1, F2, F3, etc... así que me iría de puta madre si pudieras adaptarlo.

Gracias otra vez.
Pues he estado mirando y he llegado a una opción muy completa:
#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <ctime>
using namespace std;

void PulsarTecla(unsigned char Tecla)
{
    keybd_event(Tecla,0x9e,0 , 0); //Pulsamos una tecla (Letra)
}

void SoltarTecla(unsigned char Tecla)
{
    keybd_event(Tecla,0x9e, KEYEVENTF_KEYUP,0); // //Soltamos una tecla (Letra)
}

char toDec(string aux)
{
    int dec[2];
    for (int i = 0;i < 2;i++)
    {
        if (aux[i] >= '0' && aux[i] <= '9')
        {
            dec[i] = aux[i] -'0';
        }
        else dec[i] = aux[i] - 'A' + 10;
    }
    return (dec[0]*16 + dec[1]);
}

int main()
{
    DWORD min,max;
    string aux;
    unsigned char tecla;
    srand(time(0));

    cout<<"Introduce intervalo minimo (s): ";
    cin>>min;

    cout<<"Introduce intervalo maximo (s): ";
    cin>>max;

    cout<<"Introduce la tecla: ";
    cin>>aux;
    if (aux.size() == 4)
        aux = aux.substr(2);
    tecla = toDec(aux);

    min *= 1000; // pasar a milisegundos
    max *= 1000;
    cout<<endl<<"Iniciando..."<<endl;
    while (1)
    {
        Sleep((rand() % (max-min))+ min);
        PulsarTecla(tecla);
        SoltarTecla(tecla);
    }
    return 0;
}

https://dl.dropboxusercontent.com/u/695 ... ro%202.exe

Cuando te pida la tecla hay que introducir:
http://msdn.microsoft.com/en-us/library ... 85%29.aspx

El código que aparece en la referencia, por ejemplo, para la tecla F1 buscamos y encontramos:
VK_F1 0x70

Por tanto introducimos en la consola 0x70. También podemos introducir 70 y funcionaría igual (el 0x no hace falta, es opcional).

Si algún compañero descubre un programa con su interfaz gráfica e intuitiva que haga esto perfecto, pero hasta entonces te puedo dejar esto :)
Supongo que más cómodo sería pasar directamente el VK_NUMLOCK.
Si pulsas la tecla, tiene la referencia asociada, es innecesaria buscarla a mano.
aquí se ve en el ejemplo msdn.microsoft.com/en-us/library/windows/desktop/ms646304%28v=vs.85%29.aspx
Resulta que el programa que buscaba era para evitar una desconexión por inactividad (un anti-idle, vamos) y se ve que ahora con darle a una tecla de función ya no se evita la desconexión, sino que de alguna manera ve que tu rutina no ha cambiado durante 15 minutos y te echa igual. Es decir, si tu le das a F1 cada 5 minutos lo considera estar tan AFK como si no le dieses a ninguna tecla.

Siento haberos hecho perder el tiempo y muchas gracias por la ayuda. :)
Pues randomiza la pulsación
exitfor escribió:Pues randomiza la pulsación


Al final el método que encontré es bastante "primitivo", pero sirve: grabé con un "mouse recorder" 3 acciones diferentes durante un período de tiempo de 10 minutos y al irlas repitiendo parace que el contador de AFK se resetea cada vez que cambio de acción.
7 respuestas