Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-01-2008
Daniel316 Daniel316 is offline
Registrado
 
Registrado: ene 2008
Posts: 7
Poder: 0
Daniel316 Va por buen camino
Detectar pulsación de tecla sin imprimirla en pantalla (sin Libreria conio)

Hola a todos
Es mi primer post por lo tanto deseo presentarme
Soy Daniel tengo 55 años y autodidacta en Java y C++.-

...........................
char primer[10],segundo[10],apellido[10];

cout << "Ingrese primer nombre(maximo 10 caracteres).:";
cin.gets(primer);

cout << "Ingrese segundo nombre(maximo 10 caracteres):";
cin.gets(segundo);
...........................

Bueno la cuestión es con en el ingreso de datos, lo que pretendo
es que al ingresar por Ej. 10 caracteres en "Ingrese primer
nombre..:" automáticamente se pase a "Ingrese segundo nombre..:"
y así sucesivamente.-
Para ello creo que la única manera es hacer un bucle, pero quiero
hacerlo sin la biblioteca "conio" con el uso de "getch()".-
La pregunta es: alguien conoce alguna función que detecte la
tecla presionada sin imprimirla en pantalla...?
Programa en Dev-C++ - C++

Un gran abrazo
Daniel
Responder Con Cita
  #2  
Antiguo 12-01-2008
Avatar de grandmasterdari
grandmasterdari grandmasterdari is offline
Miembro
 
Registrado: ene 2008
Posts: 46
Poder: 0
grandmasterdari Va por buen camino
Post intento de solucion

pues amigo no es muy facil de entender lo que pides, este es mi intento

getch() //funcion que retorna el valor de la tecla presionada
gotoxy(int x, int y) // requiere incluir conio.h funcion que posiciona el cursor en el shell (25 x 80 si mal no recuerdo)

tecla presionada se devuelve en forma ascii, o sea si presionamos la A getch() devuelve 23 orx 'A' y se imprime en pantalla
pero.. señor... ud no quiere que se imprima en pantalla segun entiendo. entonces vamos a tener ke ir a borrarlo, retrocediendo una posicion y escribiendo un blanco 32 orx ' ' y retrocediento (si otra vez) una posicion.
Magia, es mas rapido que la vista, ni siquiera vimos que apretamos.
el codigo seria algo asi
Código:
            ch=getch();
            gotoxy(wherex()-1,wherey());
            printf(" ");
            gotoxy(wherex()-1,wherey());
y al final la variable ch (char) contiene lo que presionamos.
para hacerlo iterativo. por ejemplo. capturar un string de 15 caracteres

Código:
printf("ingrese el nombre (15 caracteres)");
char str[15];
for(int i=0;i<15;i++){
            str[i]=getch();
            gotoxy(wherex()-1,wherey());
            printf(" ");
            gotoxy(wherex()-1,wherey());             
}
y capturamos un string de 15 caracteres sin mover el cursor, sin que los ojos lo detecten.
Si vamos a trabajar con DOS, hay ke utilizar muuuuucho el gotoxy(int x,inty) recomiendo que se mude a una interfaz de windows ya que lleva mucho tiempo crear un programa cuya interfaz "grafica" es un shell (ventanita de DOS o terminal), y distrae al programador del verdadero problema, los requisitos del software

Última edición por grandmasterdari fecha: 12-01-2008 a las 00:27:57.
Responder Con Cita
  #3  
Antiguo 12-01-2008
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Poder: 19
JuanErasmo Va por buen camino
Investiga en este foro sobre Hook de teclado

Buenos dias,

hace tiempo hice un software para keylogger, con la funcion, pulsaba la tecla, y quedaba "atrapada en el hook," y yo tenia con codigo, que mostrarla.

Si estas interesado responde este hilo, o mira las solciones en los foros, busca hook de teclado.

Tengo el codigo en C++, contactame para enviartelo,
Gracias.
Responder Con Cita
  #4  
Antiguo 12-01-2008
Daniel316 Daniel316 is offline
Registrado
 
Registrado: ene 2008
Posts: 7
Poder: 0
Daniel316 Va por buen camino
Hola JuanErasmo
Baya si me interesa, lo único que espero es poder entenderlo
ya que hace muy poco comencé con C++.-

Me gustaría que lo pongas aqui para beneficio de todos
de lo contrario este es mi correo:rdvsm316@wanadoo.es

Un muchas gracias JuanErasmo
Un gran abrazo a todos
Daniel

Última edición por Daniel316 fecha: 12-01-2008 a las 20:06:32. Razón: Me olvide de poner el asunto
Responder Con Cita
  #5  
Antiguo 12-01-2008
Daniel316 Daniel316 is offline
Registrado
 
Registrado: ene 2008
Posts: 7
Poder: 0
Daniel316 Va por buen camino
Sin Conio ni el Api de Windows

Hola
Un muchas gracias grandmasterdari
Evidentemente la alegría del post de JuanErasmo me hizo
apurarme a responder.-
Lo que yo deseo es capturar la pulsación de las teclas
sin imprimirla en pantalla, sin hacer uso de Conio ni el
Api de Windows (sera posible...?), si no obtengo una
respuesta satisfactiria lo voy a hacer con PDCurses, lo
malo de esta librería es que no puedo encontrar ninguna
documentación en Español.-

Chau
Daniel
Responder Con Cita
  #6  
Antiguo 18-01-2008
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Poder: 19
JuanErasmo Va por buen camino
asi es como se hace, disculpa la demora.

Código:
void __fastcall TForm1::AppMessage(tagMSG &Msg, bool &Handled)
 {
 
   if (Msg.message == WM_HOTKEY)
   {
     //  if( (LOWORD(Msg.lParam) == MOD_SHIFT ) && (HIWORD(Msg.lParam) == 88) ){
         if( (LOWORD(Msg.lParam) == MOD_SHIFT ) && (HIWORD(Msg.lParam) == VK_F2) ){
          UnregisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKeyXM"));
          keybd_event(VK_F2,0,0,0);
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Eliminar Pulsación tecla Supr javiermorales OOP 22 22-04-2010 00:27:23
esperar pulsacion de tecla brandolin Varios 1 15-03-2005 02:38:54
Capturar pulsación de tecla quade C++ Builder 4 03-06-2004 18:31:20
Controlar pulsacion de una tecla desde toda la aplicacion Sick boy OOP 5 21-05-2004 17:30:48
Simular pulsacion de tecla acrophet Varios 1 28-10-2003 19:35:41


La franja horaria es GMT +2. Ahora son las 01:56:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi