Quand sendkeys ne marche pas (simulation d'appui de touches)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 16 962 fois - Téléchargée 40 fois

Contenu du snippet

Sendkeys permet de simuler l'appuie de touches du clavier, cela peut être très utile si on fait intervenir des applications extérieures. C'est très simple il suffit d'envoyer la séquence des touches dont on a besoin pour la manipulation.
Mes desfois ça bug, les touches n'arrive pas dans le programme, surtout ceux du genre fortran d'avant guerre. Alors voilà l'astuce.
On met l'instruction désirée dans le presse papier, ensuite on se sert de Sendkeys pour envoyer l'instruction pour coller le contenu du presse papier, généralement Alt+Espace+E+O ce qui ce traduit par "% eo".
Etrangement certains programmes se comporte bizarrement avec sendkeys, seul des ordres simples passe, comme notre séquence qui nous servira pour toutes les touches.

Source / Exemple :


Public Declare Sub Sleep Lib "kernel32" (ByVal dwTime As Long)
' Sleep sert pour la synchronisation de la macro et du programme
--------------------------------------------------------------------------------------------
Sub ExeTS()

Dim MyAppID
MyAppID = Shell("C:\monprogramme.exe", vbNormalFocus)

Set MyDataObject = New DataObject 'création d'un DataObject

MyDataObject.SetText Chr(13)   'insertion de la touche "Entrée" dans le DataObject
MyDataObject.PutInClipboard     'transvasement du DataObject au Presse Papier
SendKeys "% eo", True              'collage du contenue du presse papier
Sleep 1000 'attente d'execution du programme

MyDataObject.SetText ("aaaaa") 'saisie du mot de passe
MyDataObject.PutInClipboard
SendKeys Chr(8), True              'effacement des caractères présents
SendKeys "% eo", True
Sleep 1000

End Sub

Conclusion :


N'hésitez pas à m'écrire si vous trouvez des bug à ce code où si vous avez des améliorations à apporter, mon mail : onatzkypatrick@hotmail.com

1er bug : certaine fois, un caractère s'ajoute tout seul à votre saisie, il suffit de l'effacer avant avec SendKeys Chr(8), True 'Retour en arrière.

A voir également

Ajouter un commentaire

Commentaires

cs_sisko59
Messages postés
3
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
5 mai 2005
-
Rend service pour comprendre copier/coller ;-)
devsurf
Messages postés
148
Date d'inscription
dimanche 13 octobre 2002
Statut
Membre
Dernière intervention
13 novembre 2008
-
Salut,
Je n'arrive pas à le faire fonctionner.
A quoi sert MyAppID ? il n'est pas utilisé ....

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.