begin process at 2012 05 28 11:46:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

aide sur le fonctionnement de GetMessage Pb pour sortire de la boucle


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

aide sur le fonctionnement de GetMessage Pb pour sortire de la boucle

jeudi 13 décembre 2007 à 09:19:39 | aide sur le fonctionnement de GetMessage Pb pour sortire de la boucle

achatagogo




salut,
je veux réalisé sous DEV C++ un programme qui me permet de tester des clavier. En effet, pour cela j'ai utilisé un HOOK sans DLL qui me permet de lire toutes les touches entrée par l'utilisateur sur sont clavier et les afficher ensuite les stockée sur un fichier texte.
mon programme fonction bien.
une partie du programme et la suivante :



void MsgLoop()
{
    MSG message;
    BOOL bRet;
    printf("debut msg loop\n");
  // while ((bRet=PeekMessage(&message,NULL,0,WM_KEYLAST,PM_QS_INPUT))!=0)
  while ((bRet=GetMessage(&message,NULL,0,0))!=0)
    { printf("debut while\n");
        if (bRet == -1)
         {printf("erreur message loop");
         exit(1);
                 }
        if(message.message== WM_CLOSE )
             {
                
                  system("PAUSE");
                  break;
                  }   
        else
         {
           TranslateMessage( &message );
           DispatchMessage( &message );
            }
      }
 printf("fin while\n");
}
//-----------------------------------------------------------------------------------
// enregistreur de touche (key logger)
//-----------------------------------------------------------------------------------
DWORD WINAPI KeyLogger(LPVOID lpParameter)
{
    //***************************************************
    // Récuperation de l'instance de notre executable
    //***************************************************
   
    HINSTANCE hExe = GetModuleHandle(NULL);
    if (!hExe) return 1;
    printf("on demarre le hook\n");
    //***********************
    // on demarre le hook
    //***********************
   
    hKeyHook = SetWindowsHookEx (WH_KEYBOARD_LL,(HOOKPROC) KeyEvent,hExe, 0);
    if(hKeyHook==NULL)
        printf("[le hook clavier a plante !]\n");
    else
        printf("[hook clavier en cours ...]\n");
    //***************************
    // Boucle des messages
    //*****************************
              
    MsgLoop();
          
    printf("desactive hook\n");
    //***************************
    // on desactive le hook
    //***************************
   
    if(UnhookWindowsHookEx(hKeyHook)==0)
          printf("[desactivation du Hook echoue !]");
    else
          printf("[la desactivation du hook c'est passee correctement]");
         
    return 0;
}

le problème c'est je suis obligé d'appelé la fonction MSGloop() dans la fonction KeyLogger
pour que le programme attend et me permet ainsi d'affiché les touches appuyé.
mais le souci c'est que pour quitté le programme je suis obligé de fermer la fenêtre. donc le hook n'est pas désactivé.
alors que se que je veux faire est :
1- activé le hook
2- choisir une touche pour sortir du hook
3-sortire du hook
4- choisir entre continué le programme ou pas
5-si oui continuée si non sortir en ferment le hook.

ma solution actuel qui fonctionne a moitié est :
au moment que l'utilisateur appuie sur la touche "CAPITAL" j'envoie un message pour entrée dans la boucle


  case VK_CAPITAL: {printf("<CAPITAL>");Beep(SI,200);PostMessage(NULL,WM_CLOSE,0,0);break;}
une à l'intérieur de la boucle MSGloop j'envoie un message
if(message.message== WM_CLOSE )
             {
                
                  system("PAUSE");
                  break;

sans arriver à sortir de la boucle et désactivé le hook comme le prévoie le programme



Cette discussion est classée dans : message, boucle, programme, printf, hook


Répondre à ce message

Sujets en rapport avec ce message

Un ptit pb en C, Debutant 2 . [ par Tkaos ] Voila encore un probleme, apres avoir appris a me servir du "if" j'ai fait ce petit programme :#include #include #include int main(void) { char szname Pb debutant "C" 2 [ par Tkaos ] Voila encore un probleme, apres avoir appris a me servir du "if" j'ai fait ce petit programme :#include #include #include int main(void){char szname[1 Hook sur WSAsend ? [ par 83ron ] Lut tous le monde touts d'abord ^^.Voila, j'aimerais fair un prog qui intercepete les message d'une application transmis via les Sockets. Donc je voul pb programme très très simple [ par surfeurnet ] voila il s'agit d'un programme très simple qui ne fait pas d'erreurs à la compilation avec dev-cpp mais qui plante quand je l'exécute :#include char n RAND : éviter de sortir un nombre déjà sorti... prob ! [ par did2604 ] Bonsoir,J'ai un problème assez spécial à vous exposer. Je me casse la tête dessus depuis 2h et pas moyen de trouver le bug. Voilà, j'utilise donc la f Aide pour programmation de socket en C sous unix [ par badjess ] Salut a Tous,Je suis un novice en programmation en Socket en sous environnement Linux. Aussi, j'ai essayé de trouver des programmes client serveur sur pb HOOK WH_GETMESSAGE et PostMessage [ par mortiis ] Bonjour à tousJe suis en train de faire une application qui utilisa un hook GetMessage global dans un dll et j'intercepte le message WM_RBUTTONDOWN.to Hook et WM_WINDOWPOSCHANGED [ par vecchio56 ] Je fais un programme qui doit savoir à tout moment quelle est la fenêtre au premier plan. J'ai donc fait un hook de type WH_GETMESSAGE pour pouvoir in boucle de message interrompue [ par juliol ] bonjour, je fais un prog qui utilise un hookpour qu'il tourne en permanence, apres l'avoir cree, je lance une boucle infinie et je met ma boucle de me sécurité contre les boucles infinies? [ par mikolaj ] Salut,je développe en C sous Mac osX et j'implémente actuellement un programme utilisant des nombres générés par random qui sont ensuite rejetés ou c


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,420 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales