Aide sur les api c++
Résolu
chabacha109
Messages postés
268
Date d'inscription
Statut
Membre
Dernière intervention
-
chabacha109 Messages postés 268 Date d'inscription Statut Membre Dernière intervention -
chabacha109 Messages postés 268 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Bref mon code :
Fonctionnement:
l'orsque j'appuie sur les touches 1,2,3,4....9,0 en paralléle avec le shift il affiche l'entier presser ,(les touches concernées ne son pas les verr num ok)
bon, ca marche mais ya quelle que chose qui ma bloqué , j'explique
lorsque j'appuie sur le shift et la touche "2"(par exemple) dans une période de temps sans lever la main il m'affiche
2 seulement
en principe ça me donne une chose comme ceci:2222222222222
honnêtement j'ai copié le " GetAsyncKeyState(x)==-32767" tel qu'il est ,
ils ont me dit sur un forum quelle va tester sur le bouton de clavier, si elle retourne
-32767 donc le bouton ayons le code ascii x est activé.
D'autre coté, ya quelqu'un qui m'a dit qu'il faut tester sur le bit du poids fort et le bit de poids faible...méme j'ai fait un tour sur le msdn, j'ai pas compris en fin :( , en fait ya pas d'explication avec exemple pour comprendre.....
mais j'ai essayé moi même :
il marche bien heureusement mais :
1- je veux savoir comment tester sur les bit du poids fort et faible
2-quelle est le rapport entre la version 2 et 1
3-merci de ta réponse :)))
Bref mon code :
#include<iostream.h> #include<windows.h> #include <stdio.h> void main() { while(1) { for(int i=48;i=57;i++) { if(GetAsyncKeyState(i)==-32767&&GetAsyncKeyState(16)==-32767)//le 16 est le code d'acii de shift et les 48 jusqu'à 57 sont les code d'acii des touches 1,2,3,4....9,0 printf("%c \n",i) ; } } } GetAsyncKeyState(i)==-32767//cad que la touche ayant le code d'acii i est presser
Fonctionnement:
l'orsque j'appuie sur les touches 1,2,3,4....9,0 en paralléle avec le shift il affiche l'entier presser ,(les touches concernées ne son pas les verr num ok)
bon, ca marche mais ya quelle que chose qui ma bloqué , j'explique
lorsque j'appuie sur le shift et la touche "2"(par exemple) dans une période de temps sans lever la main il m'affiche
2 seulement
en principe ça me donne une chose comme ceci:2222222222222
honnêtement j'ai copié le " GetAsyncKeyState(x)==-32767" tel qu'il est ,
ils ont me dit sur un forum quelle va tester sur le bouton de clavier, si elle retourne
-32767 donc le bouton ayons le code ascii x est activé.
D'autre coté, ya quelqu'un qui m'a dit qu'il faut tester sur le bit du poids fort et le bit de poids faible...méme j'ai fait un tour sur le msdn, j'ai pas compris en fin :( , en fait ya pas d'explication avec exemple pour comprendre.....
mais j'ai essayé moi même :
#include<iostream.h> #include<windows.h> #include <stdio.h> void sleep(..) {.....} void main() { while(1) { for(int i=48;i=57;i++) { if(GetAsyncKeyState(i)&&GetAsyncKeyState(16)) printf("%c \n",i) ; sleep(1);//attente active 1ms } } }
il marche bien heureusement mais :
1- je veux savoir comment tester sur les bit du poids fort et faible
2-quelle est le rapport entre la version 2 et 1
3-merci de ta réponse :)))
A voir également:
- Aide sur les api c++
- Naz api - Accueil - Piratage
- Api injoignable cyberghost ✓ - Forum Réseaux sociaux
- Supported api 3 en français - Forum Mobile
- Steam api dll - Forum Windows
- Mon ordi ne trouve pas steam_api.dll - Forum Windows 7
1 réponse
Bonjour,
Pas la peine de faire un nouveau post, j'allais te répondre sur l'ancien.
La valeur en sortie de ta fonction est un short signé.
Le short est sur deux octets (2 fois 8 bits), et le premier bit est le signe.
Le bit de poids fort est celui qui a la plus grande valeur (donc celui de gauche), et donc celui de poids faible est celui de droite.
Ici, tu as recopié "-32767" sans chercher à comprendre. Mais tu aurais dû chercher à comprendre et remarquer que -32767 c'est la valeur binaire 11111111 11111111.
Donc pour tester le bit de poids fort, il faut tester la valeur 11111111 00000000.
Et pour tester le bit de poids faible, il faut tester la valeur 00000000 11111111.
A l'aide d'une simple calculatrice windows, tu convertis ces valeurs binaires en short signé :
Bit de poids fort = -32512
Bit de poids faible = 255
Concernant la différence entre les deux versions de ton code ;
La première version est GetAsyncKeyState(i)==-32767
Et la deuxième, sans mettre de 'condition explicite' revient à faire GetAsyncKeyState(i)!=0
Cordialement, M.
Pas la peine de faire un nouveau post, j'allais te répondre sur l'ancien.
La valeur en sortie de ta fonction est un short signé.
Le short est sur deux octets (2 fois 8 bits), et le premier bit est le signe.
Le bit de poids fort est celui qui a la plus grande valeur (donc celui de gauche), et donc celui de poids faible est celui de droite.
Ici, tu as recopié "-32767" sans chercher à comprendre. Mais tu aurais dû chercher à comprendre et remarquer que -32767 c'est la valeur binaire 11111111 11111111.
Donc pour tester le bit de poids fort, il faut tester la valeur 11111111 00000000.
Et pour tester le bit de poids faible, il faut tester la valeur 00000000 11111111.
A l'aide d'une simple calculatrice windows, tu convertis ces valeurs binaires en short signé :
Bit de poids fort = -32512
Bit de poids faible = 255
Concernant la différence entre les deux versions de ton code ;
La première version est GetAsyncKeyState(i)==-32767
Et la deuxième, sans mettre de 'condition explicite' revient à faire GetAsyncKeyState(i)!=0
Cordialement, M.
chabacha109
Messages postés
268
Date d'inscription
Statut
Membre
Dernière intervention
9
merci beaucoup swed , c'est claire , en fait j'ai résolu le problème