Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: s_azazel en 3 Noviembre 2010, 15:31 pm



Título: Enviar pulsaciones de teclas
Publicado por: s_azazel en 3 Noviembre 2010, 15:31 pm
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!!!!


Título: Re: Enviar pulsaciones de teclas
Publicado por: Khronos14 en 3 Noviembre 2010, 15:35 pm
Busca información sobre la API keybd_event, es mucho más sencillo usar esta función.

Saludos.


Título: Re: Enviar pulsaciones de teclas
Publicado por: Nork en 3 Noviembre 2010, 22:42 pm
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!


Título: Re: Enviar pulsaciones de teclas
Publicado por: madpitbull_99 en 4 Noviembre 2010, 09:31 am
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) (http://msdn.microsoft.com/es-es/library/ms171548%28VS.80%29.aspx)

Puede que te sirva de algo.

Saludos!


Título: Re: Enviar pulsaciones de teclas
Publicado por: 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!!!!



Título: Re: Enviar pulsaciones de teclas
Publicado por: тαптяα en 4 Noviembre 2010, 14:15 pm
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.

 ::)


Título: Re: Enviar pulsaciones de teclas
Publicado por: Khronos14 en 4 Noviembre 2010, 15:25 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.


Título: Re: Enviar pulsaciones de teclas
Publicado por: s_azazel en 4 Noviembre 2010, 19:52 pm
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!!!


Título: Re: Enviar pulsaciones de teclas
Publicado por: Khronos14 en 4 Noviembre 2010, 20:18 pm
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


Título: Re: Enviar pulsaciones de teclas
Publicado por: s_azazel en 4 Noviembre 2010, 21:24 pm
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???


Título: Re: Enviar pulsaciones de teclas
Publicado por: тαптяα en 4 Noviembre 2010, 21:40 pm
Calro tu tienes que orientas el code al HWND de tu juego hay distintos modos de "focalizar" el code, hacía cierto proceso.