Sendkeys dans une application à l'intérieur d'une form
Philippe_judo
Messages postés18Date d'inscriptionmardi 17 avril 2007StatutMembreDernière intervention 6 mai 2015
-
12 mars 2011 à 02:28
NHenry
Messages postés15151Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 4 septembre 2024
-
17 mars 2011 à 13:38
Bonjour,
J'ai un activeX à l'intérieur d'une form. Comment puis-je utiliser la commande Sendkeys pour envoyer une commande à mon ActiveX?
Philippe_judo
Messages postés18Date d'inscriptionmardi 17 avril 2007StatutMembreDernière intervention 6 mai 2015 12 mars 2011 à 04:00
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.
NHenry
Messages postés15151Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 4 septembre 2024159 12 mars 2011 à 13:47
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.
Philippe_judo
Messages postés18Date d'inscriptionmardi 17 avril 2007StatutMembreDernière intervention 6 mai 2015 12 mars 2011 à 19:45
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Philippe_judo
Messages postés18Date d'inscriptionmardi 17 avril 2007StatutMembreDernière intervention 6 mai 2015 12 mars 2011 à 20:13
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_judo
Messages postés18Date d'inscriptionmardi 17 avril 2007StatutMembreDernière intervention 6 mai 2015 12 mars 2011 à 21:02
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.
NHenry
Messages postés15151Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 4 septembre 2024159 13 mars 2011 à 00:37
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.
Philippe_judo
Messages postés18Date d'inscriptionmardi 17 avril 2007StatutMembreDernière intervention 6 mai 2015 17 mars 2011 à 02:41
À 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?