elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  ¿Puede simularse con exactitud una secuencia de teclas grabadas previamente?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Puede simularse con exactitud una secuencia de teclas grabadas previamente?  (Leído 2,434 veces)
leogdsl

Desconectado Desconectado

Mensajes: 1


Ver Perfil
¿Puede simularse con exactitud una secuencia de teclas grabadas previamente?
« en: 4 Julio 2020, 07:01 am »

Hola,

Estoy desarrollando una aplicación para repetir las pulsaciones del teclado que fueron grabadas anteriormente. El enfoque de la aplicación son los speedrun, sería algo como un TAS (tool-assisted speedrun or tool-assisted superplay).

La aplicación detecta las teclas presionadas mediante el uso de hooks y manteniendo un registro de estas con toda la información que el hook proporciona (lo que encontramos en la estructura KBDLLHOOKSTRUCT). Las secuencia de teclas son detectadas y grabadas correctamente, así como la simulación para reproducir esta secuencia, sin embargo, el problema que estoy teniendo es relacionado a la precisión.

Si por ejemplo, juego Super Mario Bros de Nintendo y grabo todas las pulsaciones del teclado y luego lo reproduzco, puedo ver pequeñas diferencias, salta un poco antes o un poco después, etc. Y si lo pruebo varias veces puedo obtener resultados ligeramente diferentes.

Para calcular cuanto tiempo debe estar presionada una tecla y cuando debe ser liberada he usado la variable time de la estructura KBDLLHOOKSTRUCT, calculando la diferencia entre el keydown y el keyup, uso esta misma información para la simulación. En vista que los resultados no son exactos he desconfiado de este tiempo y he agregado los Ticks que se tienen en el momento del keydown y del keyup, he notado diferencias de varios mili-segundos comparándolos con el time de la estructura que mencioné antes, sin embargo, la simulación usando estos Ticks sigue siendo inexacta.

En cuanto a como hago para esperar el tiempo que se debe para pulsar o liberar una tecla he usado varios métodos, Thread.Sleep, o un ciclo comparando los Ticks e iterando internamente con Thread.SpinWait o Thread.Sleep cada 1ms, stopwath, etc. Después de cada espera verifico las diferencias de tiempos y por lo general no supera 1 ms.

Todo esto me hace pensar si hay algo que debo considerar para lograr conseguir lo que quiero.

¿Será que el tiempo que recibo de los eventos no es exacto? y por tal razón no logro reproducirlo de forma exacta. Será que debo tener en cuenta la resolución de la CPU para hacer más exacta la espera o simplemente debería cambiar el enfoque.

Cualquier ayuda es bien recibida, gracias de ante mano.


En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: ¿Puede simularse con exactitud una secuencia de teclas grabadas previamente?
« Respuesta #1 en: 4 Julio 2020, 09:31 am »

Es un problema físico. Como el del electrón que no puedes medir su velocidad sin modificar su dirección, es algo similar.

Utilizas el mismo sistema operativo para medir los tiempos sin considerar que este a su vez ya gasto algo de tiempo recibiendo esa información por parte del hardware

Además si consideras todas las operaciones que el SO realiza entre un programa y otro (lecturas de disco, pasar de un programa a otro, y realizar funciones propias del sistema, almacenamiento de memoria, etc)

Lo único que se me ocurre es que realices alguna grabación a nivel hardware, con algún equipo externo.

Tambien podrías tratar de promediar la diferencia de tiempos entre lo originalmente enviado y lo que logras reproducir y le restes ese promedio de diferencia a las peticiones enviadas

Saludos


« Última modificación: 4 Julio 2020, 09:33 am por AlbertoBSD » En línea

FFernandez

Desconectado Desconectado

Mensajes: 128



Ver Perfil
Re: ¿Puede simularse con exactitud una secuencia de teclas grabadas previamente?
« Respuesta #2 en: 26 Julio 2020, 22:37 pm »

Si registras el Key...  consulta la hora de sistema............obtendras un retardo   el mismo que la nueva consulta del Key....   la diferencia deberia de aproximarse muchisimo al tiempo que estubo presionada.

No hagas calculos mientras registra. Reducira las diferencias.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problemas de Fotos grabadas en CD
Multimedia
1.8 1 2,143 Último mensaje 24 Septiembre 2004, 00:11 am
por Songoku
Dvd read error con los juegos d wii grabadas con el portatil
Software
CrÄsH 2 4,855 Último mensaje 1 Marzo 2009, 19:24 pm
por CrÄsH
Outlook - confirmar lectura de mensaje previamente cancelado
Software
BlaineMonkey 0 2,170 Último mensaje 6 Junio 2011, 13:17 pm
por BlaineMonkey
Operacion con Double me falla la exactitud « 1 2 »
Programación C/C++
xmbeat92 10 7,497 Último mensaje 13 Diciembre 2011, 21:55 pm
por xmbeat92
Instalar un programa previamente configurado
Hacking
overrider 1 2,681 Último mensaje 9 Junio 2013, 09:59 am
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines