2008-11-26 7 views
1

Juste en essayant de faire appuyer la touche enter après un délai dans vb6, tous les exemples que je trouve ne semblent pas fonctionner, aucune aide? Je tente juste de simuler une frappe. Focus n'a pas d'importance.Sendkeys dans vb6

Répondre

0

Qu'est-ce que vous essayez de faire? Comment savez-vous que ça ne marche pas?

Si vous essayez de déclencher un gestionnaire d'événements, vous pouvez l'appeler en code au lieu d'appuyer sur une touche.

2

Vous devrez peut-être fournir plus de détails. Mais SI vous essayez d'envoyer une clé d'entrée à une application créée par VB6 et qu'elle ne la récupère pas, c'est généralement le fait que vous n'avez pas défini la propriété KeyPreview du formulaire sur true. Sans le contrôle avec la mise au point actuelle absorbe la pression de touche que vous avez envoyé.

Si vous avez créé l'application qui reçoit la clé d'entrée. Je vous recommande fortement de refactoriser l'application de telle sorte que le code qui est déclenché par enter puisse être fait par le code. Cela est généralement fait en déplaçant le code dans une zone accessible aux deux applications. C'est parce que Sendkeys est notoirement non-déterministe et peut causer beaucoup d'étrangeté.

Il existe un keybd_event que vous pouvez utiliser à partir de l'API Win32 info here Je l'ai trouvé plus fiable que SendKeys.

0

SendKeys doit toujours être un dernier recours.

Le problème est vraiment le focus. Vous devez définir le focus avant chaque envoi. À peu près tout peut être complété via le script, alors qu'est-ce que vous essayez de faire?

0

J'ai fait une application de test vb6. avec 1 formulaire, 1 bouton par défaut, 1 minuteur:

Private Sub Command1_Click() 
    Debug.Print CStr(Now) + " Command1" 
End Sub 
Private Sub Timer1_Timer() 
    Debug.Print CStr(Now) + " Sendkeys" 
    SendKeys "{Enter}" 
End Sub 

Il semblait fonctionner lors de l'envoi à lui-même. 11/30/2008 6:11:38 PM Sendkeys 11/30/2008 6:11:38 PM Command1 11/30/2008 6:11:43 PM Sendkeys 11/30/2008 6:11:43 PM Command1 11/30/2008 6:11:48 PM Sendkeys 11/30/2008 6:11:48 PM Command1

Souhaitez-vous envoyer à un autre processus?

0

Vous pouvez essayer mon programme PushKeys qui est available here. La syntaxe est compatible avec SendKeys mais utilise l'API keybd_event et possède une fonction de veille intégrée.

0

Il y a quelques problèmes avec SendKeys sur Vista. Voir this article par Karl Peterson pour les détails et la solution.

0

Voici ce que je fais si je veux retarder une action dans mon script:

t = Timer + 5  'Change 5 to a higher number if you need more time to wait 
Do While Timer < t 
    DoEvents   'This is necessary to prevent freezing 
Loop 

SendKeys "{ENTER}" 

SendKeys "{ENTER}", True 'This might also work