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


 


Tema destacado: Cifrar documentos-carpetas con GnuPG en Linux y Windows


+  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 284 veces)
leogdsl

Desconectado Desconectado

Mensajes: 1


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

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
Colaborador
***
Desconectado Desconectado

Mensajes: 3.465


🏴 Libertad!!!!!


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

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 por AlbertoBSD » En línea

FFernandez

Desconectado Desconectado

Mensajes: 44


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

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 1,033 Último mensaje 24 Septiembre 2004, 00:11
por Songoku
Automatizar una secuencia en una web.
Programación Visual Basic
kas8355 4 1,611 Último mensaje 29 Abril 2009, 19:36
por kas8355
Operacion con Double me falla la exactitud « 1 2 »
Programación C/C++
xmbeat92 10 4,645 Último mensaje 13 Diciembre 2011, 21:55
por xmbeat92
Instalar un programa previamente configurado
Hacking Básico
overrider 1 1,430 Último mensaje 9 Junio 2013, 09:59
por Eleкtro
Crean un algoritmo que predice con 74% de exactitud quién será el próximo en ...
Noticias
wolfbcn 5 1,489 Último mensaje 1 Agosto 2017, 02:29
por #!drvy
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines