Page 1 sur 1

[Tuto] Simuler les frappes de clavier

Posté : dim. 23 déc. 2007 12:56
par codename44
La simulation de frappes de clavier avec AutoIt utilise la fonction send

Que peut-faire cette fonction ?
simuler toutes les touches du clavier, donc toutes les lettres/chiffres/caractères spéciaux mais également simuler des combinaisons de touches (ex : "contrôle + c" pour copier)

send peut également simuler des touches optionnelles sur les claviers, que vous n'avez peut-être pas comme augmenter le volume, contrôler le media player, etc..

L'utilisation peut se faire touche par touche, mais également avec tout un texte :

Code : Tout sélectionner

send("b")
send("o")
...
send("bonjour comment ça va ?")

Pour faire les combinaisons de touches les commandes à utiliser sont un peu différentes :
! : remplace ALT dans une combinaison (exemple : send("!f") fera ALT+f)
^ : remplace CTRL dans une combinaison (exemple : send("^c") fera CTRL+c (copier))
+ : remplace SHIFT
# : remplace la touche windows (placée entre CTRL et ALT)

pour écrire un point d'exclamation, comment faire puisque cela fait une combinaison ?
il suffit de le mettre entre accolades : {!}, pareil pour {^},{+},{#}

Liste des commandes les plus utilisées :
(pour le reste aller dans l'aide autoit et faire une recherche de "send")
ce qui est indiqué en dessous doit être mis entre les guillemets : send("")


{TAB} : touche TAB
{ENTER} : Touche ENTREE
{UP}, {DOWN}, {LEFT}, {RIGHT} : Flèches
{BS} : Backspace
{F1} - {F12}
{LWIN} : Touche Windows gauche.

voici un petit script utilisant à peu près tout ce que l'on vient de voir :

Code : Tout sélectionner

Run ( "notepad.exe" ) ;lance le bloc note 
 WinWaitActive ( "Sans titre - Bloc - notes" ) ; attend que la fenêtre nommée "Sans titre - Bloc - notes" apparaisse 
 
 send ( "Texte à copier" ) ;tape le texte : "Texte à copier" 
 sleep ( 500 ) ;ne fait rien pendant 500ms pour que le script ne soit pas trop rapide 
 
 send ( "^a" ) ;appuie sur CTRL + a ( selectionne tout ) 
 sleep ( 500 ) 
 send ( "^c" ) ;appuie sur CTRL + c ( copie la sélection ) 
 sleep ( 500 ) 
 
 send ( "{RIGHT}" ) ;appuie sur la flèche de droite, pour remettre le curseur au bout de la ligne 
 sleep ( 500 ) 
 
 send ( "{ENTER}" ) ;appuie sur ENTREE pour passer à la ligne suivante 
 sleep ( 500 ) 
 
 send ( "^v" ) ;appuie sur CTRL + v ( colle ) 
 sleep ( 500 ) 
 
 send ( "{ENTER}" ) ;appuie sur ENTREE pour aller à la ligne 
 sleep ( 500 ) 
 
 Send ( "La date et l'heure sont : {F5}" ) ;tape le texte "La date et l'heure sont :", puis appuie sur F5 ( F5 est une fonction du bloc note qui insère la date et l'heure ) 
 sleep ( 500 ) 
 
 send ( "!f" ) ;appuie sur ALT + f : ouvre le fichier menu 
 sleep ( 500 ) 
 
 send ( "q" ) ; appuie sur q : pour Quitter 
 sleep ( 500 ) 
 
 send ( "n" ) ; appuie sur n ( ne pas sauvegarder )

Re: [Tuto] Simuler les frappes de clavier

Posté : dim. 12 févr. 2012 21:14
par Nao
Est-il possible de simuler la touche Maj enfoncé ? ( Majuscule en dessous de "caps lock" et au dessus de "ctrl" )

Ps: si elle ne s'appelle pas comme cela :? merci de me corriger :D

Re: [Tuto] Simuler les frappes de clavier

Posté : dim. 12 févr. 2012 21:17
par Tlem
Pour information, lorsque vous avez installé AutoIt, un fichier d'aide a aussi été installé. Dans celui-ci vous trouverez la commande Send et tout un tas d'informations dont celle que vous recherchez.

Re: [Tuto] Simuler les frappes de clavier

Posté : lun. 13 févr. 2012 18:36
par Nao
Oui je l'ai lu et c'est pour cela que je pose la question : Est-il possible de simuler la touche Maj enfoncé ?
car send ne le permet pas donc ma question demande si il existe une autre fonction que le permet.

Re: [Tuto] Simuler les frappes de clavier

Posté : lun. 13 févr. 2012 19:29
par Tlem
Nao a écrit :car send ne le permet pas donc ma question demande si il existe une autre fonction que le permet.
:shock:
Soyons d'accord sur ce que vous cherchez à faire. Vous avez dit :
Nao a écrit :Est-il possible de simuler la touche Maj enfoncé ?
Si vous cherchez à maintenir la touche majuscule (Shift gauche ou droit) enfoncée, alors vous avez mal lu.
Si vous voulez maintenir enfoncé la touche de verrouillage des majuscules, il faudrait indiquer la raison, car à priori cela n'a franchement aucun intérêt.
Mais si effectivement c'est votre souhait, la commande Send ne gère effectivement pas ce comportement (puisque inutile). Maintenant, il me semble qu'il existe un UDF qui peut gérer l'appui simultané de plusieurs touches. Il faut voir si la touche de verrouillage des majuscules serait prise en compte. Vous devriez trouver cet UDF sur le forum Anglais.

Re: [Tuto] Simuler les frappes de clavier

Posté : lun. 13 févr. 2012 20:49
par Nao
Son utilité est qu'avec le bloc-note on peut sélectionner une partie des choses inscrite avec la touche Shift et les touches directionnelle et je voulais m'en servir car j'ai plusieurs dessins fais avec des caractères que je voudrais partager avec d'autre mais certain rendent mieux avec une partie qui du bleu en fond et une police blanche.

Edit:
Et oui j'avais très mal lu :( je viens de le voir maintenant mais shift est dans les possibilité de autoit : "+"
Donc j'ai trouver :D Send("+{up}") cela sélectionne la ligne au-dessus :) donc mon problème est résolut.

Re: [Tuto] Simuler les frappes de clavier

Posté : lun. 13 févr. 2012 21:00
par Tlem
Roohhhhh, mais comment lisez-vous un document ? :shock:
Vous avez bien lu cette aide : http://www.autoitscript.fr/autoit3/docs ... s/Send.htm ?????

Si oui, alors recherchez ce texte : Holds the SHIFT key down until {SHIFTUP} is sent

Il serait sympa de prendre un peut plus de temps dans vos recherches et éventuellement écouter ce que l'on vous suggère. :mrgreen:

Re: [Tuto] Simuler les frappes de clavier

Posté : sam. 11 avr. 2015 12:15
par anje84
Bonjour.

Je viens d'essayé t'on script , mais il s'arrête juste après l'ouverture de la fenêtre note pad puis il se met en pause.J'ai tenté moi aussi dans écrire un pour installer un logiciel avec les fonction send mais la réaction et la même.Peut tu m'éclairer stp ?
codename44 a écrit :<...>

Re: [Tuto] Simuler les frappes de clavier

Posté : sam. 11 avr. 2015 16:17
par orax
Pour cet exemple, avec le bloc-notes sur Windows 8 j'ai Sans titre - Bloc-notes et pas Sans titre - Bloc - notes.
De plus il y a une espace insécable après "titre" (notée par un soulignement) : Sans titre - Bloc-notes
Il suffit d'exécuter ce code pour récupérer le bon titre.

Code : Tout sélectionner

Run ( "notepad.exe" )
Sleep(2000)
ClipPut(WinGetTitle("[ACTIVE]")) ; récupère le titre de la fenêtre active (le bloc-notes) dans le presse-papier

Code : Tout sélectionner

WinWaitActive ( "Sans titre" & Chr(0xA0) & "- Bloc-notes" )

Re: [Tuto] Simuler les frappes de clavier

Posté : sam. 11 avr. 2015 19:00
par mikell
Une utilisation judicieuse de WinTitleMatchMode pourrait (aussi) grandement te simplifier la vie

Re: [Tuto] Simuler les frappes de clavier

Posté : lun. 13 avr. 2015 09:35
par TommyDDR
De manière générale vous pouvez aussi laisser enfoncer une touche en utilisant {xxx DOWN} puis {xxx UP} pour relâcher.

Exemple avec la touche shift gauche (left) pour envoyer un "A" 'majuscule) :

Code : Tout sélectionner

Send("{LSHIFT DOWN}")
Send("a")
Send("{LSHIFT UP}")

Re: [Tuto] Simuler les frappes de clavier

Posté : jeu. 27 août 2015 17:03
par M3rlin71
Bonjour,
Après avoir fait plusieurs essais, et parcouru l'aide d'AutoIt, je n'ai pas réussi à simuler la combinaison "Touche_Windows=L"
j'ai essayé les commandes suivantes :
Send ("#l")

Send ("{LWIN}l")

Send("{LWINDOWN}L{LWINUP}")

Aucune de ces combinaisons ne fonctionnent, serait-ce désactivé? (je suis sur une version Windows SEVEN)

Merci

Re: [Tuto] Simuler les frappes de clavier

Posté : jeu. 27 août 2015 19:21
par orax
Ce n'est peut-être pas autorisé (comme CTRL+ALT+SUPPR d'ailleurs). Mais il y a LockWorkStation de l'API Windows qui permet de faire ce que tu veux. Voir _WinAPI_LockWorkStation ( )

Re: [Tuto] Simuler les frappes de clavier

Posté : ven. 28 août 2015 10:57
par M3rlin71
Bonjour Orax,

Merci pour ta réponse, effectivement, ta solution répond à ce que je recherchais.