(win32) Modifier la valeur affichée d'une fenetre

Résolu
mogwai93 Messages postés 361 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 19 mars 2015 - 18 avril 2006 à 16:09
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 18 avril 2006 à 22:01
Bonjour,

j'essaie de modifier les valeurs affichees d'un programme B à l'aide d'un programme A
le programme A arrive à recupérer la liste des objets graphiques de B
A arrive à afficher ou cacher les fenetres de B

avec SetWindowText :
A arrive à modifier le contenu des fenetres "static" de B
mais
ca ne fonctionne pas avec les fenetres "edit" de B

comment faire ?

merci

4 réponses

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
18 avril 2006 à 16:54
Logiquement ca devrais marcher. Es tu surs que tes handles sont bons? Tu peux le vérifier avec Spy++.
SetDlgItemText et SetWindowText, ne sont rien de plus que des appels a SendMessage, avec le message WM_SETTEXT

Shell
3
HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 1
18 avril 2006 à 16:45
essai SetDlgItemText()

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
a+
0
mogwai93 Messages postés 361 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 19 mars 2015
18 avril 2006 à 17:08
donc :

ne fonctionnent pas :
SetDlgItemText
SetWindowText

par contre, c'est passé avec
SendMessage(hwnd, WM_SETTEXT, 0, (LPARAM)"test");

à DeAtHCrAsH : mes handles etaient bons, puisque ShowWindow fonctionne sans pb sur les edit
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 20
18 avril 2006 à 22:01
C'est clairement précisé dans MSDN (dans Petzold aussi), il faut utiliser WM_SETTEXT en interprocessus pour forcer le système à transférer le contenu de l'adresse mémoire d'un processus vers l'autre. Il est clair sinon qu'une adresse mémoire est invalide d'un processus l'autre.

ciao...
BruNews, MVP VC++
0