Détecter un événement du clavier
Bonjour tout le monde,
Je suis nouveau parmi vous et c'est mon premier message dans ce site.
J'ai des connaissances de base dans le langage de programmation C, et j'ai besoin de votre aide.
J'utilise le logiciel Microsoft visual studio pour mes programmes en C sous Windows et j'aimerais savoir comment peut-on détecter un événement du clavier (exemple appui sur le bouton "ALT") pour effectuer un comportement (exemple écrire un message d'information).
J'utilise un programme simple exemple :
Code:
1 2 3 4 5 6 7 8 9 10
| main ()
{
int i = 1 ;
while(i)
printf("pas d appui");
????????
return 0;
} |
Mon but est d'ajouter la partie de code manquante qui permet de détecter à n'importe quel moment s'il y a un appui sur la touche du clavier "ALT" et une fois qu'il y a un appui sur ce bouton là, le programme écrit "touche detectee" et change la valeur de i ( exemple : printf("touche detectee"); et i = 0;).
Merci d'avance.
Merci de penser aux balises [CODE] [/CODE]
ATTENTION DETERREMENT !!! 2014 - 2020 : Je vous laisse réfléchir :roll:
Prévoir deux fichiers :
- Le fichier principal où tu auras rajouté le code suivant à un endroit stratégique (à toi de voir) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| // Interrompre le programme dès que la touche 'a' est pressée.
FILE * Test_a = fopen("Test_touche.txt", "r");
if(Test_a == NULL)
exit(1);
if(fgetc(Test_a) == 'a')
{
fclose(Test_a);
break;
} |
- Un fichier secondaire avec le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main(int argc, char *argv) // OU PLUS SIMPLEMENT int main(void) en l'absence de SDL, par exemple.
{
char detection;
while(1)
{
if(kbhit())
{
detection=getch();
}
if (detection == 'a')
{
FILE * Is_typed_a = fopen("Test_touche.txt", "w");
if(Is_typed_a == NULL)
exit(1);
fprintf(Is_typed_a, "a");
fclose(Is_typed_a);
printf("touche a frappee \n" );
break;
}
}
} |
A partir de là, tu ouvres DEUX consoles (Exécuter -> cmd -> ENTREE DEUX fois :lol:)
- Dans l'une, tu lances le fichier principal.
- Dans l'autre, tu lances le fichier secondaire et le tour est joué.
Remarque : :roll: Euh, ça fonctionne sous Windows, toujours :?