begin process at 2012 05 28 12:58:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Fichier & Disque

 > 

API windows (Probleme avec SendMessage(.... WM_SETTEXT.....)


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

API windows (Probleme avec SendMessage(.... WM_SETTEXT.....)

mercredi 18 février 2009 à 17:40:45 | API windows (Probleme avec SendMessage(.... WM_SETTEXT.....)

rivaldinho


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?
mercredi 18 février 2009 à 18:25:10 | Re : API windows (Probleme avec SendMessage(.... WM_SETTEXT.....)

rt15

Membre Club Administrateur CodeS-SourceS
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).
mercredi 18 février 2009 à 18:28:43 | Re : API windows (Probleme avec SendMessage(.... WM_SETTEXT.....)

BruNews

Administrateur CodeS-SourceS
Va impec avec du NON Unicode.
ex: http://www.cppfrance.com/code.aspx?id=23024

ciao...
BruNews, MVP VC++
mercredi 18 février 2009 à 18:30:20 | Re : API windows (Probleme avec SendMessage(.... WM_SETTEXT.....)

BruNews

Administrateur CodeS-SourceS
oups, on se croise avec rt15.

Pas besoin d'entrer dans le processus cible explicitement, l'appel WM_SETTEXT le fait implicitement.

ciao...
BruNews, MVP VC++
mercredi 18 février 2009 à 20:40:32 | Re : API windows (Probleme avec SendMessage(.... WM_SETTEXT.....)

rivaldinho

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??



mercredi 18 février 2009 à 20:52:58 | Re : API windows (Probleme avec SendMessage(.... WM_SETTEXT.....)

rivaldinho

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);
               
                VirtualAllocEx(hWnd,NULL,dwSize,MEM_COMMIT,PAGE_EXECUTE_READWRITE);
                WriteProcessMemory(hWnd,NULL,ptr,dwSize,NULL);
               
                SendMessage(hWnd,WM_SETTEXT,0,(LPARAM)ptr);

                VirtualFreeEx(hWnd,NULL,dwSize,MEM_DECOMMIT);
            }
mercredi 18 février 2009 à 21:01:07 | Re : API windows (Probleme avec SendMessage(.... WM_SETTEXT.....)

BruNews

Administrateur CodeS-SourceS
NIET, j'ai dit que WM_SETTEXT suffit.

Affiche donc par MessageBox ce que tu veux envoyer, tu verras ainsi ce que tu as.

ciao...
BruNews, MVP VC++
mercredi 18 février 2009 à 22:15:38 | Re : API windows (Probleme avec SendMessage(.... WM_SETTEXT.....)

rt15

Membre Club Administrateur CodeS-SourceS
Ah oui, bien vu BruNews.

Et le problème vient probablement du fait que tu compiles en unicode rivaldinho.

int main()
{
    HWND hWnd, hWnd2; // Handles de fenêtre
    hWnd = FindWindow(NULL,TEXT("Essai - Bloc-notes"));
            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)(TEXT("ALLO")));
            }
return 0;
}

mercredi 18 février 2009 à 22:46:41 | Re : API windows (Probleme avec SendMessage(.... WM_SETTEXT.....)

rivaldinho

Merci pour votre aide!! CA MARCHE

RIVALDINHO!!!!!!


Cette discussion est classée dans : text, probleme, hwnd, notepad, hwnd2


Répondre à ce message

Sujets en rapport avec ce message

API windows [ par rivaldinho ] 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, size probleme avec l'explorateur [ par Alucards ] salut a tous ,bon voila mon probleme je suis en train de creer une appli sous devc++ 4.9.8.0 , j'ai creer une dialogbox   de cette facon hDlg = Creat Probleme de bouton en C [ par yohan49 ] Salut les gars , vous pouvez me donner l'astuce pour pouvoir afficher un bouton avec icone + text ,ca fait des jour que je cherche et le resultat est Probleme d'INSERT en vs2005 [ par ghostleretour ] Bonsoir à tous,Ce petit message HELP car je tourne en rond depuis des heures sur le net et je ne trouve pas de solution à mon probleme.Une exception n probleme de compilation [ par freeskieuse ] Bonjour,j'ai un probleme de compilation:projet.exe(.text+0x0):crtstuff.c: multiple definition of `mainCRTStartup'C:/Program Files/MinGW/bin/../lib/gcc enumwindow [ par sam20 ] Salut a tous.Je cherche a enumerer les fenetres qui ce trouvent dans le gestionaire de tache -> application.BOOL CALLBACK EnumWindowsProc(HWND hwnd,LP treeview edit label [ par lectpe ] Bonjour.Je voudrais pouvoir éditer un label dans un treeview.MON CODE :TV_INSERTSTRUCT tviis;TV_ITEM tvi;...      case WM_NOTIFY:      {         HWND Probleme SendMessage(...) [ par Hevelina ] SendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ); Bonjour j ai quelques problemes.Je doit faire un programme de lecture de musique pour probleme de *Char [] [ par oRTEEZ ] Bonjour, voila mon nouveau petit probleme.je pense pas que cela soit tres dur.J'ai un char Text[256] : contenant un texte entre par l'user.et unchar ecrire dans un fichier text [ par papipsycho ] bonjour a tous voila j ai un probleme je pense pas quil soit tres dur a realiser jai deja chercher dans les source du site mais je n ai pas trouver mo


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,357 sec (4)

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