Enviar pulsaciones de teclas

Iniciado por s_azazel, 3 Noviembre 2010, 15:31 PM

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

s_azazel

Muy buenas estoy intentando hacer un bot para un juego enviando pulsaciones de teclado para que realice el movimiento y me encuentro con el siguiente problema....

Esto es lo que tengo;

#include <stdio.h>
#include <windows.h>
HWND Handle;
long x;
main ()
{



Handle=FindWindow(NULL,"Nombre de la ventana");
printf ("%d\n",Handle);
   for(x=1;x<=10;x=x+1)
   {
PostMessage (Handle, WM_KEYDOWN, 87,5000);
}
}

La cosa es que si tengo la ventana del chat dentro del juego abierta me escibe correctamente las "w" pero si la cierro no me avanza el personaje que es lo que deberia de hacer al pulsar la w

Sabeis a que sepuede deber????

Gracias!!!!

Khronos14

Busca información sobre la API keybd_event, es mucho más sencillo usar esta función.

Saludos.

Nork

Has probado a usar la alternativa SendMessage? Hace un tiempo hice lo mismo que quieres hacer y creo recordar que use sendmessage..- la diferencia creo recordar era que una enviaba el evento a una cola y puede ser que al no tener el foco la ventana del juego tarde en realizar el evento. Prueba con sendmessage y si te sigue sin funcionar reviso lo que hice y te comento.

Saludos!
C' Est La Vie

madpitbull_99

Hace tiempo tuve que hacer algo similar, aun guardaba el enlace en los marcadores :
Cómo: Simular eventos del mouse y del teclado en el código (MSDN)

Puede que te sirva de algo.

Saludos!



«Si quieres la paz prepárate para la guerra» Flavius Vegetius


[Taller]Instalación/Configuración y Teoría de Servicios en Red

s_azazel

No se si tendra alguna proteccion o algo o sera por que para caminar habra que dejar pulsada la tecla el caso es que las pulsaciones las envia correctamente todas menos las de movimiento.

Por ejemplo si envio la letra B em abre el inventario correctamente

¿Es posible que la unica forma sea inyectando una dll y enviando la pulsacion desde el mismo proceso????

El caso es que estoy algo verde aun en el tema de la inyeccion XDDD

Muchas gracias a todos!!!!


тαптяα

Aunque el movimiento sea dejar pulsada X tecla.

Si haces un bucle donde este todo el rato apretando a esa X tecla te servirá.

De todos modos también te recomiendo usar keydb_event.

::)

Khronos14

Cita de: s_azazel en  4 Noviembre 2010, 12:58 PM
No se si tendra alguna proteccion o algo o sera por que para caminar habra que dejar pulsada la tecla el caso es que las pulsaciones las envia correctamente todas menos las de movimiento.

Por ejemplo si envio la letra B em abre el inventario correctamente

¿Es posible que la unica forma sea inyectando una dll y enviando la pulsacion desde el mismo proceso????

El caso es que estoy algo verde aun en el tema de la inyeccion XDDD

Muchas gracias a todos!!!!



Si leyeras mi respuesta, tendrías la solución.

La API keybd_event simula la pulsación de teclas, y funciona como si pulsaras las teclas de verdad; además puedes hacer combinaciones de teclas pulsadas al mismo tiempo.

s_azazel

Perdonar pero estoy un poco verde aun estoy aprendiendo.... :S:S:S

La API keybd_event no parece tener ningun argumento para pasarel el Handle de la ventana donde enviar las pulsaciones del teclado

¿hay alguna forma de ponerle el foco del teclado a la ventana del juego antes de enviar la pulsacion???

Gracias!!!

Khronos14

Citar
simula la pulsación de teclas, y funciona como si pulsaras las teclas de verdad

No necesitas HANDLE para nada, se envían pulsaciones de teclas, da igual la aplicación que tenga el foco....

http://msdn.microsoft.com/en-us/library/ms646304(VS.85).aspx

s_azazel

Pero si tengo el juego minimizado y ejecuto la aplicacion en c++ con ese codigo la pulsacion de teclado me ira a la aplicacion de c++ que estoy haciendo no al juego no???