API windows (Probleme avec SendMessage(.... WM_SETTEXT.....)
cs_rivaldinho
Messages postés28Date d'inscriptionjeudi 15 janvier 2009StatutMembreDernière intervention23 avril 2009
-
18 févr. 2009 à 17:40
cs_rivaldinho
Messages postés28Date d'inscriptionjeudi 15 janvier 2009StatutMembreDernière intervention23 avril 2009
-
18 févr. 2009 à 22:46
Salut, voici le code que j'utilise pour écrire dans la zone texte de notepad
int main()
{
HWND hWnd, hWnd2; // Handles de fenêtre
hWnd = FindWindow(NULL,TEXT("Essai - Notepad"));
if (hWnd) //Si on l'a trouvé
{
// Parcours de la hierarchie de classes de notepad
hWnd=FindWindowEx(hWnd,0,TEXT("IME"),NULL);
hWnd2=FindWindowEx(hWnd,0,TEXT("Notepad"),NULL);
if(hWnd2) hWnd=hWnd2;
hWnd=FindWindowEx(hWnd,0,TEXT("Edit"),NULL);
SendMessage(hWnd,WM_SETTEXT,0,(long)"ALLO");
}
}
Voici ce que j'obtient dans la zone texte du notepad : ?? au lieu de "ALLO" Est-ce qlq aurais une idée du probleme?
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 18 févr. 2009 à 18:25
Salut rivaldinho,
Toujours la même chose... Que ce soit WM_GETTEXT ou WM_GETTEXT, il faut que le texte ou que le buffer de réception soit dans le processus cible.
Il faut que tu alloue une zone dans le processus DISTANT
(VirtualAllocEx), que tu écrives le texte dans le processus distant (WriteProcessMemory), que tu envoie ton WM_SETTEXT en lui passant l'adresse de la zone allouée dans le processus distant, que tu
libère la zone allouée dans le processus distant (VirtualFreeEx).
cs_rivaldinho
Messages postés28Date d'inscriptionjeudi 15 janvier 2009StatutMembreDernière intervention23 avril 2009 18 févr. 2009 à 20:40
Salut BruNews, je viens de voir ton exemple qui marche bien sur le notepad, mais mon programme en vérité écrit le texte dans un programme qui converti le texte en voix (Votre PC rend la parole). J'ai essayé de faire la meme chose que toi pour mon programme mais ton code me semble compliqué car Je suis encore débutant en C++ .
Voici la hierarchie de classes du convertisseur:
//hWnd = FindWindow(NULL,TEXT("Votre PC prend la parole"));
//if (hWnd) //Si on l'a trouvé
// {
// hWnd=FindWindowEx(hWnd,0,TEXT("IME"),NULL);
// hWnd2=FindWindowEx(hWnd,0,TEXT("TMDSon"),NULL);
// if(hWnd2) hWnd=hWnd2;
// hWnd=FindWindowEx(hWnd,0,TEXT("TMemo"),NULL);
// SendMessage(hWnd,WM_SETTEXT,0,(LPARAM)"ALLO");
J'ai ceci qui apparait dans la zone de texte : "??" et j'ai pas comrpi "Va impec avec du NON Unicode." Peut-tu m'aider silteplait??
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_rivaldinho
Messages postés28Date d'inscriptionjeudi 15 janvier 2009StatutMembreDernière intervention23 avril 2009 18 févr. 2009 à 20:52
Salut rt15 j'ai pas bien compri l'utilisaion des fonctions que tu m'a conseillé voici ce que j'ai écrit mais sa m'envoi toujours les memes caracteres bizares:
string phrase="HELLO MIKI";
char *ptr;
ptr=&phrase[0];
bool enable=true;
SIZE_T dwSize=1024;
hWnd = FindWindow(NULL,TEXT("Essai - Notepad"));
if (hWnd) //Si on l'a trouvé
{
// Parcours de la hierarchie de classes de notepad
hWnd=FindWindowEx(hWnd,0,TEXT("IME"),NULL);
hWnd2=FindWindowEx(hWnd,0,TEXT("Notepad"),NULL);
if(hWnd2) hWnd=hWnd2;
hWnd=FindWindowEx(hWnd,0,TEXT("Edit"),NULL);