Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Captar teclas que presiona el usuario

Estas en el tema de Captar teclas que presiona el usuario en el foro de C/C++ en Foros del Web. lo que quiero hacer es que mi programa sume +1 a una variable todo el rato, sin parar, por la eternidad se este sumando +1 ...
  #1 (permalink)  
Antiguo 20/11/2011, 17:41
(Desactivado)
 
Fecha de Ingreso: septiembre-2011
Ubicación: Casupá, Florida, Uruguay
Mensajes: 70
Antigüedad: 12 años, 7 meses
Puntos: 4
Pregunta Captar teclas que presiona el usuario

lo que quiero hacer es que mi programa sume +1 a una variable todo el rato, sin parar, por la eternidad se este sumando +1 a la variable "contador"
pero si el usuario presiona una tecla X por ejemplo, si el usuario presiona F4
se deje de sumar +1 a esa variable y que si apreto F3 se siga sumando..
bueno lo intenté de esta forma:

Código C++:
Ver original
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <string>
  5. using namespace std;
  6.  
  7. int main(int argc, char *argv[])
  8. {
  9.     int i;
  10.     int letra;
  11.     letra = getchar();
  12.     cout<<"--------"<<endl;
  13.     if(letra==57)
  14.         {
  15.         cout<<"hola, apretaste 9"<<endl;
  16.         }
  17.         else if(letra==56)
  18.         {
  19.         cout<<"hola, apretaste 8"<<endl;
  20.         }
  21.     cout<<endl<<"la letra que ingresaste es : ";
  22.     putchar(letra);
  23.     cout<<" y se indentifica con el codekey "<<letra<<endl;
  24.     cout<<endl;
  25.     system("PAUSE");
  26.     return EXIT_SUCCESS;
  27. }
no sabia que hacia en getchar(); asi que para probarlo hise esto que lo que hace esque si apretas 9 te dice "hola apretaste 9" y abajo te dice de nuevo, letra o numero que ingresaste y cual es su codekey, hace lo mismo si apretas 8,
y si apretas una letra o numero que no sea ni 9 ni 8 solo te dice que fue lo que apretaste y cual es su codekey, bueno eso no tiene nada que ver con lo que dije antes del contador y sumar +1 todo el rato ya que aquello era solo un ejemplo, yo solo quiero saber como reconocer teclas que el usuario aprete pero este metodo no me sirbe
porque lo que hace eso es que si escribes tal tecla en la consola Y APRETAS ENTER el programa hace una cosa y sino otra,
pero lo que yo quiero esque el programa "capte" esas 2 teclas independientemente de si el usuario está o no usando el programa, osea que esté en ejecucion pero que no nesesariamente el usuario "tenga seleccionada la ventana de mi programa", que el programa este atento continuamente y si el usuario presiona 9 sin que tenga que escribirlo en la consola ni apretar enter

toda la otra parte del programa ya la tengo y funciona correctamente pero tengo que añadirle un stop y un play por decirlo de alguna forma, para que no esté continuamente ejecutando su funcion,porque lo que tengo de momento esque se ejecuta por un tiempo que el usuario define antes de empezar a realizar la funcion del programa, pero eso no es tan comodo como activarlo con 9 y desactivarlo con la tecla 8,
nesesito hacer esto para un programa de macros que hace click automaticamente, y que el usuario lo desactive con la tecla "8" y lo active con "9";
XDD me acabo de dar cuenta de que puse un ";" en ves de un punto "." para terminar el parrafo me estoy traumando, tengo 16 años, hace 2 o 3 semanas empezé con c++, esta noche me acuesto y sueño con las variables y las funciones y el getchar jajaja

bueno si alguien me puede ayudar, pues le agradeceria muchisimo xD ya que nisiquiera se si c++ puede "captar" esas dos teclas o cualquier otra sin que el usuario las escriba en mi programa y presione enter,
creo que con algunas librerias multimedia se puede, pero si puediera hacerlo sin ellas mucho mejor.

Última edición por kevinvgp; 20/11/2011 a las 18:22
  #2 (permalink)  
Antiguo 21/11/2011, 16:46
 
Fecha de Ingreso: mayo-2011
Mensajes: 65
Antigüedad: 12 años, 11 meses
Puntos: 3
Respuesta: Captar teclas que presiona el usuario

Básicamente es el funcionamiento de un keylogger, ¿no?
A mí se me ocurre hacerlo con la función GetAsyncKeyState.

Un ejemplo es:

Código C++:
Ver original
  1. if(GetAsyncKeyState(VK_UP))
  2. {
  3. printf("Se ha pulsado la flecha hacia arriba.\n");
  4. }

Si se ha pulsado la tecla de la flecha hacia arriba, muestra el mensaje.

Todavía no sé demasiado de c++. Si tú has empezado hace unas semanas, yo empecé hace un par de días xDD pero supongo que mediante algún bucle o con algo que coja el carácter que se pulse y lo sustituya por donde yo he puesto VK_UP, prácticamente mostraría la tecla mostrada ^^.
  #3 (permalink)  
Antiguo 22/11/2011, 15:12
(Desactivado)
 
Fecha de Ingreso: septiembre-2011
Ubicación: Casupá, Florida, Uruguay
Mensajes: 70
Antigüedad: 12 años, 7 meses
Puntos: 4
Respuesta: Captar teclas que presiona el usuario

hola muchas gracias, si lo solucione con un bucle infinito, y un GetAsyncKeyState,
para hacer el bucle que siempre se repite haces asi
while(TRUE){y aca pones lo que quieras;}

Última edición por kevinvgp; 23/11/2011 a las 18:07

Etiquetas: c++, captar, teclas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:54.