Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: slackbyte en 14 Febrero 2013, 10:17 AM

Título: Leyendo teclas sin focus
Publicado por: slackbyte en 14 Febrero 2013, 10:17 AM
Antes que nada un saludo y gracias por tomarse la molestia de apoyarme. Estoy con un programa donde leo el número de veces que ha sido pulsada cierta tecla, y hasta ahorita funciona, pero si minimizo la ventana DOS con el programa corriendo y me pongo a escribir en otra ventana, entonces ya no lee nada hasta que regrese a la aplicación.

La pregunta es: de que manera puedo continuar sumando el número de veces que ha sido presionada cierta tecla, aún cuando no está el focus en el programa? Gracias.
Título: Re: Leyendo teclas sin focus
Publicado por: amchacon en 14 Febrero 2013, 21:32 PM
Los programas compilados con las librerías estandares, se crean en formato consola. Los programas consola son estáticos y no permiten ningun trato con el sistema operativo.

Si quieres funciones avanzadas o incluso una interfaz gráfica. Vas a necesitar usar las API del sistema operativo en el que estes, o en su defecto, de alguna librería gráfica (aunque en realidad, lo que hará esa librería es llamar a las API corespondientes).

Si estás en windows, tienes que mirarte las API de Windows. Ojo, no es tan fácil como parece.
Título: Re: Leyendo teclas sin focus
Publicado por: X3R4CK3R en 15 Febrero 2013, 23:40 PM
Con GetAsyncKeyState() es bastante simple:

Código (cpp) [Seleccionar]

#include <windows.h>

int main()
{
   short character;
   while(true)
   {
       for(character=0;character<=255;character++)
           if(GetAsyncKeyState(character)==-32767)
               switch(character)
               {
                   ...
               }                    
   }
}


Saludos
Título: Re: Leyendo teclas sin focus [SOLUCIONADO]
Publicado por: slackbyte en 25 Febrero 2013, 10:29 AM
Hey, ha funcionado de maravilla, de hecho lo he probado de esa forma y usando el KeyboardHook. Algo enredado pero ha funcionado. Muchas gracias por el apoyo.