Bouton OK externe

Résolu
vxr888 Messages postés 85 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 27 novembre 2010 - 22 févr. 2005 à 11:46
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre 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 ?

23 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
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 :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
3
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
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++.

Cocoricoooooooo !!!!
coq
MVP Visual C#
3
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
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.

Cocoricoooooooo !!!!
coq
MVP Visual C#
3
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
13 mars 2005 à 11:36
[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#
3

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

Posez votre question
vxr888 Messages postés 85 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 27 novembre 2010
22 févr. 2005 à 14:29
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.
0
APWEB Messages postés 74 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 18 octobre 2006 2
22 févr. 2005 à 18:05
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
0
vxr888 Messages postés 85 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 27 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.
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
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 ^^

Mx
0
vxr888 Messages postés 85 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 27 novembre 2010
23 févr. 2005 à 09:08
"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
0
vxr888 Messages postés 85 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 27 novembre 2010
24 févr. 2005 à 10:11
Ok merci
0
vxr888 Messages postés 85 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 27 novembre 2010
24 févr. 2005 à 12:56
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.
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
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 :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
24 févr. 2005 à 15:46
T'as bien fait de mettre "plus qu'a" entre guillemets ;)

Mx
0
vxr888 Messages postés 85 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 27 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)
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
25 févr. 2005 à 08:43
lol
Je regarde ça de plus prêt chez moi, ce soir ou durant le WE.

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

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
vxr888 Messages postés 85 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 27 novembre 2010
28 févr. 2005 à 10:11
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 !
0
vxr888 Messages postés 85 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 27 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.
0
vxr888 Messages postés 85 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 27 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.
0
vxr888 Messages postés 85 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 27 novembre 2010
12 mars 2005 à 13:58
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é !
0
Rejoignez-nous