Utilisation de SPY++

Résolu
goutbouyo Messages postés 429 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 12 janvier 2008 - 5 oct. 2004 à 21:33
goutbouyo Messages postés 429 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 12 janvier 2008 - 7 oct. 2004 à 20:24
Salut,

J'ai récupéré le handle d'une fenêtre avec spy++ mais après je n'arrive pas à l'utiliser : j'ai toujours des erreurs car mon handle est sous forme héxa.

Pouvez vous m'indiquer une source ou tuto où ce sujet est traité SVP ???
A voir également:

13 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 oct. 2004 à 19:08
Utilise FindWindowEx() pour descendre dans la hierachie de IEFrame.

ciao...
BruNews, MVP VC++
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 oct. 2004 à 21:39
Quel rapport avec le format d'affichage ?
Le handle d'une fenetre varie d'une instance du prog a son prochain lancement.

ciao...
BruNews, MVP VC++
0
goutbouyo Messages postés 429 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 12 janvier 2008
5 oct. 2004 à 21:43
Pour internet explorer j'ai réussi comme ça :
hDlg = FindWindow("IEFrame",NULL);

C'est bon ou pas ?

Mais par contre je n'y arrive pas avec les edit ...
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 oct. 2004 à 21:47
Quels Edit ? FindWindow() ne recherche pas de child window, il te faut le ctrlID d'un edit et faire une enumeration.

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 oct. 2004 à 21:48
ctrlID ou autre critere determinant.

ciao...
BruNews, MVP VC++
0
goutbouyo Messages postés 429 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 12 janvier 2008
5 oct. 2004 à 21:50
Ok j'ai récupéré le contol id de l'edit(sous IE barre d'adresse, juste pour un test).

Mais aprés si je fait un GetDlgItem ça marche pas donc faut procéder comment ???
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 oct. 2004 à 22:10
Regarde bien l'arborescence dans spy++ pour arriver au combo (barre d'adresse) et suis le meme parcours dans ton code.
La barre d'adresse n'est pas un direct child de la frame principale.

ciao...
BruNews, MVP VC++
0
boumarsel Messages postés 298 Date d'inscription jeudi 12 juin 2003 Statut Membre Dernière intervention 9 juillet 2008 1
6 oct. 2004 à 05:42
Si tu as le handle d'une fenetre tu peux en faire tout ce que tu veux. en utilisant des API comme CLoseWindow, SetWindowPos, SetWindowText... et beaucoup d'autres fonctions de la section (platforme SDK->interface utilisateur)->window (ou Window class)

Ce qu'il faut savoir c'est que les handles sont attribuées d'une façon aleatoire et varient à chaque lancement du processus qui les a creé.

je te donne un exemple d'utilisation:
j'ai recuperé le handle suivant à l'aide de spy++ "00070408"
et je vais l'utiliser dans une fonction qui demande le handle comme parametre, exemple: CloseWindow(HWND hwnd)
solution1:
HWND hwnd1;
hwnd1=(HWND)0x00070408;
CloseWindow(hwnd1);

solution2:
CloseWindow((HWND)0x00070408);
(le x de 0x c'est le caractere "x" standard)
0
goutbouyo Messages postés 429 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 12 janvier 2008
6 oct. 2004 à 15:05
Merci pour ton exemple pour le handle boumarsel !

En suivant l'arborescence de spy+ je suis arrivé jusqu'à l'edit de la barre d'adresse.

Mais comment faire pour suivre le même chemin dans mon code ?
Avec les fonctions habituelles ?
0
goutbouyo Messages postés 429 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 12 janvier 2008
7 oct. 2004 à 18:44
Salut,
Je n'arrive toujours pas à obtenir mon edit de la barre d'adresse ...

Je vois que ça marche pas avec GetDlgItem donc il doit bien y avoir une fonction pour ça, non ???

Please help me ...
0
goutbouyo Messages postés 429 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 12 janvier 2008
7 oct. 2004 à 19:52
Ok c'est cool !!
Ca marche trés bien avec FindWindowEx.

Par contre pour mon dernier je met ça :

hDlg = FindWindowEx(hDlg,0,"Edit",0);

SetWindowText(hCtrl, "hello");

Ca me change pas le texte de l'edit de barre d'adresse, mais par contre avec spy+ quand je vais dans cet edit, le "hello" est marqué au niveau de "caption".

Avec un GetDlgItem() ça marche pas non plus... ou alors je l'utilise mal.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 oct. 2004 à 20:04
Essaie cela:
SendMessage(hbaraddr, WM_SETTEXT, ....);

ciao...
BruNews, MVP VC++
0
goutbouyo Messages postés 429 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 12 janvier 2008
7 oct. 2004 à 20:24
Merci ça marche !!!
@+++++
0
Rejoignez-nous