Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: snoopty en 13 Septiembre 2021, 09:51 am



Título: Escapar de un Ciclo con GetAsyncKeyState
Publicado por: snoopty en 13 Septiembre 2021, 09:51 am
Hola a todos ! En este Código no logro que al apretar la Tecla " F1 " éste finalice e imprima la línea  [ cout<<"PROGRAMA TERMINADO"<<endl; ]
Intenté " la forma sin & 0x8000" pero - -aunque ninguna de las dos formas de GetAsyncKeyState al Compilar me arrojaba Error -- tampoco lo logré.  Cada vez que oprimo F1 o bien me repetía el anterior Número ingresado, o bien se generaba como un Overflow con Pantalla Azul ( con Contador de 0 a 100 ) o se quedaba tildada la PC.
Luego de que me ocurrió ese Overflow " me desapareció el Dev-C++ EMBARCADERO " ;
((aunque no es la primera vez que me ocurre)) LUEGO, como alternativa sigo con Dev-C++ 5.11 o bien vuelvo a instalar EMBARCADERO
    
#include <iostream>
#include <windows.h>
using namespace std;

int main()
{
int a;
int b;
int c;


while (!(GetAsyncKeyState(VK_F1) & 0x8000))
{

cout<<"Ingrese a"<<endl;
cin>>a;
 
cout<<"Ingrese b"<<endl;
cin>>b;

c=(a+b);

cout<<"LA SUMA ES  :"<<c<<endl;  

}
   
cout<<"PROGRAMA TERMINADO"<<endl;    
return 0;
}
   
/* Gracias por leer el Post */



Título: Re: Escapar de un Ciclo con GetAsyncKeyState
Publicado por: MAFUS en 13 Septiembre 2021, 18:13 pm
Usa etiquetas GeSHi para poner tu código, lo encontrarás como desplegable en la barra de botones del post.

Respondiendo a tu mensaje cambia ese 0x8000 por un 1.
El 0x8000 lo que hace es mirar si la tecla se está pulsando durante la llamada a la función, el 1 informa si desde la anterior llamada a la función se ha pulsado la tecla, es decir, informa si la tecla en algún momento ha sido pulsada. Creo que ese es el comportamiento que estás buscando.

Aquí está la información al completo de cómo funciona: https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getasynckeystate


Título: Re: Escapar de un Ciclo con GetAsyncKeyState
Publicado por: snoopty en 15 Septiembre 2021, 10:36 am
Gracias ! SI me podrías explicar un poco lo de Etiquetas Geshin para dar formato para emprolijar el código como vos decís, también te lo agradecería.
Saludos !


Título: Re: Escapar de un Ciclo con GetAsyncKeyState
Publicado por: MAFUS en 15 Septiembre 2021, 15:15 pm
Si cuando vas a escribir un nuevo post o una respuesta miras la barra de herramientas que hay justo encima del cuando de entrada, hay una lista desplegable que dice Código GeSHi. En ella hay muchos lenguajes. Debes elegir con el que vas a escribir el trozo de código.

Automáticamente aparecerá un par de etiquetas en el cuadro de escritura entre corchetes con code=lenguaje y /code. Entre las dos etiquetas escribes tu código.


Título: Re: Escapar de un Ciclo con GetAsyncKeyState
Publicado por: snoopty en 16 Septiembre 2021, 01:10 am
Gracias !