cs_rivaldinho
Messages postés28Date d'inscriptionjeudi 15 janvier 2009StatutMembreDernière intervention23 avril 2009
-
3 févr. 2009 à 20:12
cs_rivaldinho
Messages postés28Date d'inscriptionjeudi 15 janvier 2009StatutMembreDernière intervention23 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???
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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.
cs_rivaldinho
Messages postés28Date d'inscriptionjeudi 15 janvier 2009StatutMembreDernière intervention23 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??