Récupérer l'id d'un controle d'un autre programme. [Résolu]

krokro6 66 Messages postés jeudi 8 avril 2004Date d'inscription 28 juin 2007 Dernière intervention - 9 juin 2006 à 23:13 - Dernière réponse : racpp 1910 Messages postés vendredi 18 juin 2004Date d'inscription 14 novembre 2014 Dernière intervention
- 10 juin 2006 à 17:31
Salut à tous, j'aurais besoin d'aide pour récupérer l'id d'un controle
d'un autre programme car je n'y arrive vraiment pas, même avec le spy ++, j'arrive à trouver la fenêtre mais ca
n'affiche pas son id.


Voila si qqun pouvait m'aider.Merci.
Afficher la suite 

Votre réponse

10 réponses

racpp 1910 Messages postés vendredi 18 juin 2004Date d'inscription 14 novembre 2014 Dernière intervention - 10 juin 2006 à 15:29
+3
Utile
Salut,
krokro6 >> Certains controles peuvent ne pas avoir d'ID car ils sont créés pendant l'exécution du programme. Pour envoyer du texte à un controle, tu peux utiliser directement son HWND. Pour récupérer ce HWND, je te conseille d'utiliser FindWindowEx():
// Pour retrouver le premier EDIT contenu dans la fenêtre:
HWND conrole=FindWindowEx(hwndparent,0,"EDIT",0);
// Pour retrouver le suivant:
controle=FindWindowEx(hwndparent,controle,"EDIT",0);
Tu peux répéter cette dernière ligne jusqu'à trouver le HWND du controle voulu. Il est préférable d'utiliser une boucle do while() si le nombre d'EDITs est grand.
Pour envoyer du texte au controle, il suffit de faire:
SetWindowText(controle,'Bonjour");
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de racpp
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 9 juin 2006 à 23:30
0
Utile
Si tu as son HWND, récupère son ID avec GetWindowLong.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
krokro6 66 Messages postés jeudi 8 avril 2004Date d'inscription 28 juin 2007 Dernière intervention - 9 juin 2006 à 23:35
0
Utile
Merci de t'as réponse rapide, cépendant, je n'ai pas très bien compris :

hwnd = FindWindow(NULL,"Mon Programme");
GetWindowLong(hwnd, et ici je dois mettre quoi ?);

Voila dans GetWindowLong(hwnd,int) à la place du int, c'est quoi que je dois mettre ?.
Commenter la réponse de krokro6
krokro6 66 Messages postés jeudi 8 avril 2004Date d'inscription 28 juin 2007 Dernière intervention - 9 juin 2006 à 23:35
0
Utile
Oups faute d'ortho, c'est pas t'as mais ta*.Désolé.
Commenter la réponse de krokro6
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 9 juin 2006 à 23:46
0
Utile
GWL_ID

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
krokro6 66 Messages postés jeudi 8 avril 2004Date d'inscription 28 juin 2007 Dernière intervention - 9 juin 2006 à 23:59
0
Utile
Hem, ne comprends vraiment pas, comment avec :
hwnd = FindWindow(NULL,"Mon Programme");
GetWindowLong(hwnd,GWL_ID);
On va dire que sur un programme j'ai un Edit Box, sur l'edit box j'ai envie d'envoyer un texte, j'y arrive mais qu'avec les programmes ou je connais l'id des controles(avec resource hacker), mais sur les programmes où resource hacker n'affiche pas le dialogue donc pas les controles, je n'arrive pas à récupérer l'id de l'edit box.
Dans ton code, GWL_ID, c'est quoi comme controle ?.

Merci quand même de ton aide.
Commenter la réponse de krokro6
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 10 juin 2006 à 00:15
0
Utile
La question est bien "récupérer l'ID d'un controle"...

SI et seulement SI tu as réussis à avoir le hwnd du contrile (par enum, GetDlgItem ou autre), alors:
long ctrlID = GetWindowLong(hctrl, GWL_ID);

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 10 juin 2006 à 16:14
0
Utile
Toutes le fenêtes child ont bien un ID. Quand elles sont créées avec CreateWindow, le paramètre hmenu correspond à cet ID
Commenter la réponse de vecchio56
krokro6 66 Messages postés jeudi 8 avril 2004Date d'inscription 28 juin 2007 Dernière intervention - 10 juin 2006 à 17:24
0
Utile
Salut merci à tout les trois, j'ai enfin réussis à faire ce que je voulais :).
Commenter la réponse de krokro6
racpp 1910 Messages postés vendredi 18 juin 2004Date d'inscription 14 novembre 2014 Dernière intervention - 10 juin 2006 à 17:31
0
Utile
vecchio56 >> Oui, CreateWindow() permet bien d'affecter un ID à un controle. Mais c'est facultatif. Dans beaucoup d'application ce paramètre n'est pas utilisé car le HWND retourné par la fonction suffit pour gérer tout ce qui touche à ce controle. Cet ID sera égal à 0. Ce qu'on peut traduire par "pas de ID". Personnellement, je n'affecte un ID à un controle qu'en cas de besoin.
Commenter la réponse de racpp

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.