Sendkeys dans une application à l'intérieur d'une form

Signaler
Messages postés
19
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
6 mai 2015
-
Messages postés
14693
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
12 août 2020
-
Bonjour,

J'ai un activeX à l'intérieur d'une form. Comment puis-je utiliser la commande Sendkeys pour envoyer une commande à mon ActiveX?

Merci.

Philippe

11 réponses

Messages postés
14693
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
12 août 2020
144
Bonjour,

Pourquoi utiliser SendKeys dans ce cas, il y a pas d'autres méthodes dispo avec ce composant ?

Mon site
Messages postés
19
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
6 mai 2015

Bonjour,

Non, il ne semble pas y avoir d'autre méthode : même dans le menu déroulant, la commande est inaccessible (mais il s'agit peut-être d'un bogue).
Pour ceux qui connaissent, l'activeX utilisé est eDrawings de Dassault système.

Merci.

Philippe
Messages postés
14693
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
12 août 2020
144
Bonjour,

Je ne connais pas cet ActiveX,
Il y a peut être SendMessage qui peut t'aider, mais à voir.
Si tu as seulement le SendKeys, il faut donner le focus à ce contrôle, et à son conteneur, avant de l'utiliser.

Mon site
Messages postés
19
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
6 mai 2015

Bonjour,

Merci pour le tuyau : j'avais déjà pensé donnée le focus au contrôle mais qu'en est-il du conteneur? De quoi s'agit-il exactement et comment s'y prend-on?

Merci.

Philippe
Messages postés
14693
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
12 août 2020
144
Bonjour,

Le conteneur c'est ta form.

Mon site
Messages postés
19
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
6 mai 2015

Bonjour,

J'avais donc bien compris l'explication.
J'ai donc donné donné le focus à mon ActiveX avec la commande "Focus" et l'événement "GotFocus" mais on dirait qu'il tourne en boucle : suite à la ligne "sendkeys.send("e"), il ne passe à la ligne suivante que lorsque je fait ctl+alt+del.


Philippe
Messages postés
14693
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
12 août 2020
144
Bonjour,

Tu peux montrer ton code ?
Cela semble étonnant.

Mon site
Messages postés
19
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
6 mai 2015

Private Sub cmdExplode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdExplode.Click



Me.AxEModelViewControl1.Focus()


End Sub

Private Sub AxEModelViewControl1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles AxEModelViewControl1.GotFocus

SendKeys.Send("e")


End Sub

J'ai donc un simple bouton qui attrape l'événement de focus, qui est alors transféré vers l'événement "gotfocus".
J'ai essayé avec une form simple (un bouton et un textbox), je clique le bouton pour tenter de faire inscrire quelque chose dans le textbox et j'ai la même boucle. Le problème ne sembe donc pas venir de l'activeX mais bien d'une erreur dans le code.

Philippe
Messages postés
14693
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
12 août 2020
144
Bonjour,

J'ai testé avec VB.NET 2005 Pro, avec une TextBox et un Button, Le button donnant le focus à la TextBox et l'event GotFocus de la TextBox générant un SendKeys.
Je n'ai constaté aucuns pb.
à chaque appui sur le bouton, ce que j'ai mis dans le sendkeys s'affiche dans la textbox, sans aucun blocage quelconque.

Mon site
Messages postés
19
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
6 mai 2015

À ce que je peux lire sur d'autres site, Sendkeys ne serait pas la méthode la plus appropriée. Ce serait plutôt un handle, puis PostMessage(hwnd, WM_KEYDOWN, &H45, 1), qui renverrait la touche "e" à l'activeX.
Comment puis-je accéder au handle, sachant qu'il s'agit toujours d'une application activeX à l'intérieur d'une form?

Merci.

Philippe
Messages postés
14693
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
12 août 2020
144
Bonjour,

Je crois que hwnd est la propriété Handle du contrôle, à vérifier (je me teompe peut être entre ActvioeX et .NET..


Mon site