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

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

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.