Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: javier_SL en 20 Junio 2011, 19:33 pm



Título: (Duda) Interrumpir una secuencia de while
Publicado por: javier_SL en 20 Junio 2011, 19:33 pm
Hola, tengo una duda:

Tengo una secuencia dentro de un while, esta se debe repetir siempre. Sólo debe detenerse en el caso de que presione alguna tecla, la pregunta es como hago eso sin tener que ingresar depues de cada repeticion una tecla. La secuencia debe repetirse  continuamente hasta que presione la tecla correcta(puede ser cualquiera)

Me refiero a que si yo utilizo un cin, simpre estaré obligado a introducir algo, y la secuencia no se repetirá hasta que yo no lo haga.

Aclaración: es en lenguaje C++

Gracias


Título: Re: (Duda) Interrumpir una secuencia de while
Publicado por: Dark Invader en 20 Junio 2011, 19:39 pm
Hola,

Pues mira puedes utilizar esto:

Código
  1.    while(!GetAsyncKeyState(VK_F4))
  2. {
  3. bucle}

Esto haría el bucle infinito a no ser que se pulsara la tecla F4,es bastante buena esta función,yo siempre la utilizo en algún que otro while.

Salu2


Título: Re: (Duda) Interrumpir una secuencia de while
Publicado por: javier_SL en 20 Junio 2011, 19:46 pm
Hola,

Pues mira puedes utilizar esto:

Código
  1.    while(!GetAsyncKeyState(VK_F4))
  2. {
  3. bucle}

Esto haría el bucle infinito a no ser que se pulsara la tecla F4,es bastante buena esta función,yo siempre la utilizo en algún que otro while.

Salu2


Esto me srive para detener la secuencia, pero cuando apreto F4 se cierra tambien el programa. Hay alguna forma de salir del while pero no terminar el programa?


Título: Re: (Duda) Interrumpir una secuencia de while
Publicado por: Dark Invader en 20 Junio 2011, 19:55 pm
Se me ocurre esto:
Código
  1.   #include <windows.h>
  2.   #include <stdio.h>
  3.   int main (void){
  4.  
  5.  
  6.   while(!GetAsyncKeyState(VK_F4))
  7. {
  8. printf("no vas a salir del bucle");
  9.  
  10. if(GetAsyncKeyState(VK_F4)){
  11.                            break;
  12.                            }
  13.                            }
  14.                            printf("\n\n\n\nhas salido del bucle");
  15.                            getchar();
  16.                            return 0;
  17.                            }
                           
Había otra forma pero ahora mismo no me acuerdo cual era  :xD

PD:He modificado el codigo.

Salu2


Título: Re: (Duda) Interrumpir una secuencia de while
Publicado por: BlackZeroX en 20 Junio 2011, 20:08 pm
.
Instala un hook al teclado es mas optimo y no se COME al procesador, el while y esa funcion seria para verificar en algunos otros casos... es decir no es apra nada recomendable este método para algo tan simple.

Hooks (http://msdn.microsoft.com/en-us/library/ms632589(v=vs.85).aspx)
LowLevelKeyboardProc Callback Function (http://msdn.microsoft.com/en-us/library/ms644985(v=vs.85).aspx)

P.D.: Si te interesa tengo ejemplos en VB6, que se pueden pasar fácilmente a C/C++ con algunas cuantas modificaciones.

Dulces Lunas!¡.


Título: Re: (Duda) Interrumpir una secuencia de while
Publicado por: javier_SL en 20 Junio 2011, 20:15 pm
Dark Invader  muchas gracias voy a ver que puedo hacer.

BlackZeroX▓▓▒▒░░ , sinceramente no entiendo nada de lo que pusiste, tengo un nivel de programacion MUY básico, igualmente gracias