vxr888
Messages postés85Date d'inscriptionmardi 23 mars 2004StatutMembreDernière intervention27 novembre 2010
-
22 févr. 2005 à 11:46
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
17 mars 2005 à 12:25
J'aimerais activer un bouton OK externe à mon application (c'est-à-dire faisant partie d'une autre application) mais en l'activant via la mienne.
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 24 févr. 2005 à 09:02
A partir du moment où tu connaitras le handle du bouton tu pourras lui envoyer les messages correspondant à un clic (WM_LBUTTONDOWN suivi de WM_LBUTTONUP normalement).
Là je ne peux pas faire de tests, je verrais ça vendredi soir ou durant le WE si tu n'as pas trouver :-)
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 3 mars 2005 à 13:47
Effectivement ça complique les choses.
Le handle du controle change à chaque création du controle.
Donc il va falloir se baser sur la classe du controle et son texte (légende)
Si tu as Visual Studio affiche ta boite et regarde sa composition avec Spy++.
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 9 mars 2005 à 13:27
J'avais bien compris que tu voulais faire ça de manière générale.
La seule méthode que je connaisse est d'envoyer les messages WM_LBUTTONDOWN et WM_LBUTTONUP via SendMessage sur le controle concerné.
Mais il faut son handle pour ça.
Maintenant tu peux aussi regarder du côté de la méthode SendDlgItemMessage qui te permettra d'envoyer les messages en connaissant le handle de la boite de dialogue ainsi que l'ID du controle (que tu verras aussi dans les détails du controle dans spy++, il ne change pas a chaque execution normalement)
Cocoricoooooooo !!!!
coq
MVP Visual C#
Vous n’avez pas trouvé la réponse que vous recherchez ?
vxr888
Messages postés85Date d'inscriptionmardi 23 mars 2004StatutMembreDernière intervention27 novembre 2010 22 févr. 2005 à 18:46
En effet, elle est bien sympa la méthode PerformClick et j'y avais pensé... mais il semble qu'elle ne fonctionne qu'à l'intérieur de l'application dans laquelle on l'utilise, or je voudrais qu'elle fonctionne aussi sur une appli externe.
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 22 févr. 2005 à 21:38
Je peux me tromper, mais je crois que tu trouveras ton bonheur avec l'API Win32. Et plus précisement (sauf erreur) la méthode SendMessage
Par contre je suis loin d'etre un expert pour cette API, je pourrais pas t'aider.
Croise les doigt pour que Coq (qui est tres fort pour ca) passe dans le coin ^^
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 24 févr. 2005 à 13:53
A mon avis pour récupérer le handle du bouton et lui envoyer les messages tu dois te baser sur le parcours des controles de ta boite de dialogue et récupérer le handle du controle de classe "Button" avec la légende "OK". (regarde du coté de ma source sur la recup de l'adresse dans la barre d'adresse d'IE, ça devrait t'aider au niveau du parcours childs)
Ensuite tu n'as "plus qu'a" envoyer tes messages de clic :-)
vxr888
Messages postés85Date d'inscriptionmardi 23 mars 2004StatutMembreDernière intervention27 novembre 2010 24 févr. 2005 à 16:36
Euh coq, excuse moi de te demander ca, ca a l'air si simple pour toi mais tu pourrais me traduire ton post en francais stp (dsl mais j'y connais rien en api)
vxr888
Messages postés85Date d'inscriptionmardi 23 mars 2004StatutMembreDernière intervention27 novembre 2010 28 févr. 2005 à 21:10
En fait il faudrait que je puisses accéder au bouton ok d'une autre
application sans intervention autre que celle de mon application.
Si c'est trop compliqué, car les handles diffèrent peut-être selon les
applications (j'en sais rien, je sais toujours pas ce que sont ces fameux handles)
alors, on peut envisager que l'on place la souris sur ce bouton, mais que sans
cliquer, elle active le bouton.
Néanmoins, je garderai cette solution uniquement en dernier recours car la
souris est déjà affectée à une autre tâche : mettre le focus sur une textbox
afin d'y copier une chaîne de caractères.
Merci de m'aider, parce que là, plus je poste de détails, et plus je me dis que
j'y arriverai jamais.
vxr888
Messages postés85Date d'inscriptionmardi 23 mars 2004StatutMembreDernière intervention27 novembre 2010 8 mars 2005 à 09:10
Oui mais le problème est que je n'accède pas qu'à des applications c#, ca peut être
n'importe quelle application, donc, dans ce cas, si le handle change à chaque fois,
autant travailler avec la souris et je positionnerai le pointeur au-dessus du bouton.
Il me manque juste la partie de code relative aux API's permettant d'effectuer le
clic sur le bouton.