API windows

Signaler
Messages postés
28
Date d'inscription
jeudi 15 janvier 2009
Statut
Membre
Dernière intervention
23 avril 2009
-
Messages postés
28
Date d'inscription
jeudi 15 janvier 2009
Statut
Membre
Dernière intervention
23 avril 2009
-
Salut, Je suis entrain d'écrire une phrase sur notepad et je vx faire un programme sur C++ qui lit en meme temps ce que je suis entrain d'écrire sur le notepad mot par mot et rempli un buffer dans mon programme au fur et à mesure. Est-ce qlq aurai une idée???

3 réponses

Messages postés
338
Date d'inscription
samedi 9 août 2003
Statut
Membre
Dernière intervention
9 juillet 2011
2
oui ca s'appelle un hook clavier fais une recherche sur cela  tu trouveras ton bonheur
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
Par hook clavier, t'es pas rendu pour retrouver le texte...
Imagine que utilisateur sélectionne du texte et ensuite tape du texte, il y a remplacement et non ajout.


Injecte ton code (dll par hook ou remotethread), sous classe le EDIT de notepad pour intercepter son EN_CHANGE et transmets à ton prog.

ciao...
BruNews, MVP VC++
Messages postés
28
Date d'inscription
jeudi 15 janvier 2009
Statut
Membre
Dernière intervention
23 avril 2009

Salut, j'utilise ce bout de code pour récupérer en temps réel le texte écrit sur notepad:

HWND hWnd, hWnd2; // Handles de fenêtre
    DWORD size, size2; // Taille du texte
    int i=0;
    char *pBuff=NULL; // Buffer de sortie
    //line pLigne;
  
    bool flag=true;

size=0;
debut:
    while (flag)
         {
            hWnd = FindWindow(NULL,TEXT("Essai - Notepad"));  // Titre du notepad : Essai
            if (hWnd)    //Si on l'a trouvé
                {
                hWnd2=FindWindowEx(hWnd,0,TEXT("Edit"),NULL); // Edit du notepad
     
                // Récupération de la taille de la chaine et allocation du buffer en conséquence
                size=SendMessage(hWnd2,WM_GETTEXTLENGTH,0,0);
                if(size==0)
                    {
                    flag=true;
                    goto debut;
                    }
                Else flag = false;
                    
                pBuff=(char *)malloc(size);
           
                // Get du texte
                SendMessage(hWnd2,WM_GETTEXT,size,(DWORD)pBuff);
       
                }

Le probleme c'est que la fonction ne fonctionne pas toujours et une fois sur deux la fonction me retourne un size de 0 alors quil y a du texte dans le notepad. Est-ce qulqu<un aurait une idée du probleme??