Bouton OK externe [Résolu]

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

23 réponses

Répondre au sujet
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 24 févr. 2005 à 09:02
+3
Utile
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#
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_coq
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 3 mars 2005 à 13:47
+3
Utile
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#
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_coq
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 9 mars 2005 à 13:27
+3
Utile
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#
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_coq
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 13 mars 2005 à 11:36
+3
Utile
[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#
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_coq
vxr888 85 Messages postés mardi 23 mars 2004Date d'inscription 27 novembre 2010 Dernière intervention - 22 févr. 2005 à 14:29
0
Utile
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
APWEB 74 Messages postés lundi 30 juin 2003Date d'inscription 18 octobre 2006 Dernière intervention - 22 févr. 2005 à 18:05
0
Utile
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
vxr888 85 Messages postés mardi 23 mars 2004Date d'inscription 27 novembre 2010 Dernière intervention - 22 févr. 2005 à 18:46
0
Utile
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
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 22 févr. 2005 à 21:38
0
Utile
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
vxr888 85 Messages postés mardi 23 mars 2004Date d'inscription 27 novembre 2010 Dernière intervention - 23 févr. 2005 à 09:08
0
Utile
"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
vxr888 85 Messages postés mardi 23 mars 2004Date d'inscription 27 novembre 2010 Dernière intervention - 24 févr. 2005 à 10:11
0
Utile
Ok merci
Commenter la réponse de vxr888
vxr888 85 Messages postés mardi 23 mars 2004Date d'inscription 27 novembre 2010 Dernière intervention - 24 févr. 2005 à 12:56
0
Utile
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
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 24 févr. 2005 à 13:53
0
Utile
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
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 24 févr. 2005 à 15:46
0
Utile
T'as bien fait de mettre "plus qu'a" entre guillemets ;)

Mx
Commenter la réponse de MorpionMx
vxr888 85 Messages postés mardi 23 mars 2004Date d'inscription 27 novembre 2010 Dernière intervention - 24 févr. 2005 à 16:36
0
Utile
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
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 25 févr. 2005 à 08:43
0
Utile
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
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 26 févr. 2005 à 18:25
0
Utile
Question subsidiaire : tu vises une boite de dialogue particuliere ?

Cocoricoooooooo !!!!
coq
MVP Visual C#
Commenter la réponse de cs_coq
vxr888 85 Messages postés mardi 23 mars 2004Date d'inscription 27 novembre 2010 Dernière intervention - 28 févr. 2005 à 10:11
0
Utile
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
vxr888 85 Messages postés mardi 23 mars 2004Date d'inscription 27 novembre 2010 Dernière intervention - 28 févr. 2005 à 21:10
0
Utile
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
vxr888 85 Messages postés mardi 23 mars 2004Date d'inscription 27 novembre 2010 Dernière intervention - 8 mars 2005 à 09:10
0
Utile
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
vxr888 85 Messages postés mardi 23 mars 2004Date d'inscription 27 novembre 2010 Dernière intervention - 12 mars 2005 à 13:58
0
Utile
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.

Bouton OK externe - page 2