Priblème avec SetGlgItemTxt

Signaler
Messages postés
196
Date d'inscription
vendredi 21 décembre 2001
Statut
Membre
Dernière intervention
25 juillet 2006
-
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
bonjour à vous tous ...

J'ai un problème avec cette fonction : SetGlgItemTxt

J'ai une fenêtre Win32 avec une edit donc je voudrais modifier la valeur.

J'ai procédé ainsi :
j'ai récupéré le handle de l'edit avec Spy++ de VC++ 6
j'ai utilisé la fonction SetGlgItemTxt comme ceci :

#include <windows.h>

void main(void)
{

HWND hwnd;
hwnd="1573722";

SetDlgItemText(hwnd,1000,"toto");

}

où 1573722 est la handle converti en décimal donné en hexa par Spy++

le 2e arg de la fonction (1000) c'est la valeur de l'ID de l'edit dans la fenetre .. j'ai lu ca aussi dans Spy++

et le "toto" c'est le texte que je veux réussir à mettre dans l'edit ...

Lorsque je compile et éxecute le code, rien ne se produit...

Si quelqu'un peut m'aide ce serait sympa de sa part ...
merci à lui (ou a eux !)

Bigbang
Webmaster de www.OsIrIs-Security.Com"

11 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Salut,
le seul truc dont tu seras certain est le 2eme param 1000 si est le cas. A l'inverse le hwnd change a chaque lancement de ce prog, comme tous les autres. Il faut passer par FindWindow() pour obtenir son handle a l'execution. Il te faut soit son titre soit son ClassName. Seulement ainsi tournera.
ciao.
Messages postés
196
Date d'inscription
vendredi 21 décembre 2001
Statut
Membre
Dernière intervention
25 juillet 2006

ok ok ... merci pour cette aide déjà ...
je sais que le handle change à chaque fois, mais je me suis dit que vu qu'une fois lancé il ne change plus, je peu le récupérer, et travailler avec celui que Spy++ me fournit ...

enfin je pense quand même que l'utilisation de FindWindows est plus rigoureux.. Seulement je n'ai pas réussi à la faire marcher non plus ... j'ai bien le titre de la fenêtre dont je cherche le handle de l'edit, mais ca donne rien ... voila le code changé :

#include <windows.h>

void main(void)
{

HWND hwnd=FindWindow("","titre de la fenêtre");
SetDlgItemText(hwnd,1000,"toto");

}

Peut tu m'aider ?

merci

Bigbang
Webmaster de http://www.OsIrIs-Security.Com
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
HWND hwnd=FindWindow("","titre de la fenêtre");
tu as fait un test du hwnd retourne ???
Fais le. Si bon:
HWND hed = GetDlgItem(hwnd, 1000);
tu testes aussi.
si bon alors SetWindowText(hed, "mon texte");
ciao...
Messages postés
196
Date d'inscription
vendredi 21 décembre 2001
Statut
Membre
Dernière intervention
25 juillet 2006

comment tu fais pour voir si c'est le bon handle ?
parce que meme en faisant

#include <windows.h>

void main(void)
{
HWND hwnd=FindWindow("","titre de la fenetre");
HWND hed = GetDlgItem(hwnd, 1000);
SetWindowText(hed, "mon texte");
}

ca marche pas ...
j'en viens à me demander si ca serait pas le 1000 qui colle pas ...

Comment tu ferais pour avoir la valeur de l'identifiant de l'edit (nIDDlgItem) ?

Bigbang
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
if(!IsWindow(hwnd)) traite erreur.
ciao...
Messages postés
196
Date d'inscription
vendredi 21 décembre 2001
Statut
Membre
Dernière intervention
25 juillet 2006

j'ai essayé ca donc :

HWND hwnd=FindWindow("","titre de la fenetre");
if(!IsWindow(hwnd))
{
MessageBox(0,"ici","",0);
}

mais ca affiche la messagebox ... donc ca veur dire que le handle récupéré est pas le bon ? Comment ca se fait ?

Bigbang
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
HWND hwnd=FindWindow("","titre de la fenetre");
j'avais pas fait gaffe, fais
HWND hwnd=FindWindow(0,"titre de la fenetre");
le 1er param est soit:
un ClassName valide
soit NULL
"" en C est != NULL
"" est une chaine de 1 octet = 0
c'est tres different
ciao...
Messages postés
196
Date d'inscription
vendredi 21 décembre 2001
Statut
Membre
Dernière intervention
25 juillet 2006

euh ca marche pas mieux ;(

Bigbang
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
tu n'obtiens toujours pas le hwnd ???
tu es certain que titre ne change pas pendant execution comme beaucoup de progs font ???
Je te propose de faire
HWND hwnd=FindWindow("ClassName", 0);
"ClassName" SPY te le donne a moins que soit une dlgbox.
pour le idCtrl SPY te le donne avec certitude, il ne peut pas changer.
On peut savoir quel prog externe tu veux toucher ???
C'est mystique ton affaire, j'ai deja change titre de IE, Explor Windows etc sans aucun prob.
ciao...
Messages postés
196
Date d'inscription
vendredi 21 décembre 2001
Statut
Membre
Dernière intervention
25 juillet 2006

bah le titre de la fenetre ne change pas ca c'est sur ...
l'id du control non plus ...

le programme c'est un crackme ...

t'aurais pas une messagerie instantannée ... ca serait plus simple si tu as le temps !

Bigbang
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
passe par message sur ce site ainsi je te passerai intantane (hotmail) en prive.
ciao...