GetAsyncKeyState

Signaler
Messages postés
189
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
3 avril 2005
-
Messages postés
18
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
28 avril 2005
-
Bon, c'est encore moi, ce coup-ci, j'ai trouvé (plus ou moins) comment faire ce que je voulais :

#include 
#include <windows.h>
#include <conio.c>

int i;
char var;

int main()
{
   while (1)
  {
   if(GetAsyncKeyState(VK_TAB)==-32768){cout << "prout";}
  }
  return 0;
}


Le seul problème étant que lorsque j'appuie sur Tab, j'ai une miryade de "prout" dans ma console... Comment éviter ça ?

Et pour la suite de mon programme, je voudrais que la fenêtre soit cachée, et que la fonction intercepte TOUTES les touches pressées, même en dehors de la console. Est-ce possible ou est-ce que je suis obligé de passer par un Hook, dont je ne comprends rien ?

4 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
c'est hook ou driver alors tu choisis mais je te promets qu'un hook est enormement plus simple.
BruNews, ciao...
Messages postés
189
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
3 avril 2005

Bon, ben merci pour le conseil, mais alors, où puis-je trouver une explication de code pour gros noob d'un hook, parce que je lis pleins d'exemples de hooks sur machins, hook sur bidule... Mais je me refuse à copier le code sans comprendre... Donc voilà, si quelqu'un se sent le courage de m'expliquer, ou si vous avez une bonne adresse, je suis preneur, merci !
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
Si tu lis l'Anglais d'info qui tient en 100 mots maxi:
http://perso.wanadoo.fr/persans-brunews/
JR4.zip et JR4Sources.zip
BruNews, ciao...
Messages postés
18
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
28 avril 2005

Sinon, tu peux utiliser une variable d'état de l'appui de la touche. Regarde (testé et fonctionne sous Visual C++ .NET 2003) :
#include 
#include <windows.h>
#include <conio.h>

using namespace std;

int main(void)
{
bool bKeyState = true;

while (1)
{
if(GetAsyncKeyState(VK_TAB) < 0)
{
if (bKeyState)
cout << "prout" << endl;
bKeyState = false;
}
else
bKeyState = true;
}
return 0;
}