API windows

cs_rivaldinho Messages postés 28 Date d'inscription jeudi 15 janvier 2009 Statut Membre Dernière intervention 23 avril 2009 - 3 févr. 2009 à 20:12
cs_rivaldinho Messages postés 28 Date d'inscription jeudi 15 janvier 2009 Statut Membre Dernière intervention 23 avril 2009 - 9 févr. 2009 à 15:48
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

gamemonde Messages postés 336 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 9 juillet 2011 2
4 févr. 2009 à 01:45
oui ca s'appelle un hook clavier fais une recherche sur cela  tu trouveras ton bonheur
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 févr. 2009 à 11:42
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++
0
cs_rivaldinho Messages postés 28 Date d'inscription jeudi 15 janvier 2009 Statut Membre Dernière intervention 23 avril 2009
9 févr. 2009 à 15:48
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??
0
Rejoignez-nous