Bouton OK externe [Résolu]

Messages postés
85
Date d'inscription
mardi 23 mars 2004
Dernière intervention
27 novembre 2010
- 22 févr. 2005 à 11:46 - Dernière réponse :
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Derniè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.

Quelqu'un a une idée ?
Afficher la suite 

Votre réponse

23 réponses

Meilleure réponse
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
- 24 févr. 2005 à 09:02
3
Merci
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 :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#

Merci cs_coq 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de cs_coq
Meilleure réponse
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
- 3 mars 2005 à 13:47
3
Merci
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++.

Cocoricoooooooo !!!!
coq
MVP Visual C#

Merci cs_coq 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de cs_coq
Meilleure réponse
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
- 9 mars 2005 à 13:27
3
Merci
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.

Cocoricoooooooo !!!!
coq
MVP Visual C#

Merci cs_coq 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de cs_coq
Meilleure réponse
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
- 13 mars 2005 à 11:36
3
Merci
[DllImport("user32.dll")]
private static extern void SendMessage(
IntPtr hwnd,
int msg,
int wparam,
int lparam
);

private const int WM_LBUTTONDOWN = 0x0201;
private const int WM_LBUTTONUP = 0x0202;

Simulation du click :
SendMessage(buttonHandle, WM_LBUTTONDOWN, 0, 0);
SendMessage(buttonHandle, WM_LBUTTONUP, 0, 0);

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#

Merci cs_coq 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de cs_coq
Messages postés
85
Date d'inscription
mardi 23 mars 2004
Dernière intervention
27 novembre 2010
- 22 févr. 2005 à 14:29
0
Merci
En fait imaginons : une applic avec une textbox et un bouton ok (ou valider)

Maintenant une autre applic (celle-ci) qui doit etre capable d'enclencher le bouton ok sans qu'on clique dessus.

C'est à dire activer un evenement qui clique à la place de la souris.
Commenter la réponse de vxr888
Messages postés
74
Date d'inscription
lundi 30 juin 2003
Dernière intervention
18 octobre 2006
- 22 févr. 2005 à 18:05
0
Merci
Il existe la methode PerformClick() que tu peut utiliser pour declencher un boutton .

Il ne faut pas que tu oublie de le declarer public dans ta Form.



AP
Commenter la réponse de APWEB
Messages postés
85
Date d'inscription
mardi 23 mars 2004
Dernière intervention
27 novembre 2010
- 22 févr. 2005 à 18:46
0
Merci
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.
Commenter la réponse de vxr888
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
- 22 févr. 2005 à 21:38
0
Merci
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 ^^

Mx
Commenter la réponse de MorpionMx
Messages postés
85
Date d'inscription
mardi 23 mars 2004
Dernière intervention
27 novembre 2010
- 23 févr. 2005 à 09:08
0
Merci
"Croise les doigt pour que Coq (qui est tres fort pour ca) passe dans le coin ^^"

En fait c'est exactement ce à quoi je pensais quand je t'ai vu parler d'API :-D
Commenter la réponse de vxr888
Messages postés
85
Date d'inscription
mardi 23 mars 2004
Dernière intervention
27 novembre 2010
- 24 févr. 2005 à 10:11
0
Merci
Ok merci
Commenter la réponse de vxr888
Messages postés
85
Date d'inscription
mardi 23 mars 2004
Dernière intervention
27 novembre 2010
- 24 févr. 2005 à 12:56
0
Merci
J'ai regardé sur google, y'a plein de pages sur les handles mais je trouves pas ce que je cherches.

J'ai trouvé les handles des clics souris, des claviers mais pas des boutons ok.

Je continue à chercher mais pour l'instant j'ai pas trop d'idée.
Commenter la réponse de vxr888
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
- 24 févr. 2005 à 13:53
0
Merci
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 :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
Commenter la réponse de cs_coq
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
- 24 févr. 2005 à 15:46
0
Merci
T'as bien fait de mettre "plus qu'a" entre guillemets ;)

Mx
Commenter la réponse de MorpionMx
Messages postés
85
Date d'inscription
mardi 23 mars 2004
Dernière intervention
27 novembre 2010
- 24 févr. 2005 à 16:36
0
Merci
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)
Commenter la réponse de vxr888
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
- 25 févr. 2005 à 08:43
0
Merci
lol
Je regarde ça de plus prêt chez moi, ce soir ou durant le WE.

Cocoricoooooooo !!!!
coq
MVP Visual C#
Commenter la réponse de cs_coq
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
- 26 févr. 2005 à 18:25
0
Merci
Question subsidiaire : tu vises une boite de dialogue particuliere ?

Cocoricoooooooo !!!!
coq
MVP Visual C#
Commenter la réponse de cs_coq
Messages postés
85
Date d'inscription
mardi 23 mars 2004
Dernière intervention
27 novembre 2010
- 28 févr. 2005 à 10:11
0
Merci
Réponse à la question subsidiaire : Non, je voudrais pouvoir atteindre un bouton OK dans une boite de dialogue quelconque.

J'espère que t'as une solution parce j'ai passé 4h sur les api sans résultat !
Commenter la réponse de vxr888
Messages postés
85
Date d'inscription
mardi 23 mars 2004
Dernière intervention
27 novembre 2010
- 28 févr. 2005 à 21:10
0
Merci
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.
Commenter la réponse de vxr888
Messages postés
85
Date d'inscription
mardi 23 mars 2004
Dernière intervention
27 novembre 2010
- 8 mars 2005 à 09:10
0
Merci
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.
Commenter la réponse de vxr888
Messages postés
85
Date d'inscription
mardi 23 mars 2004
Dernière intervention
27 novembre 2010
- 12 mars 2005 à 13:58
0
Merci
Et il existe pas une portion de code pour récupérer ca... bah non vu que c'est un prog externe !

Et si je veux travailler au clic de la souris, c'est quoi la portion de code pour cliquer sur le bouton ? Si j'avais ca je serai vachement avancé !
Commenter la réponse de vxr888

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.