[Tuto] Simuler les frappes de clavier

Espace contenant des tutoriels divers concernant AutoIt.
Règles du forum
.

Tutoriel "La programmation avec Autoit" : https://openclassrooms.com/fr/courses/1 ... vec-autoit
Répondre
codename44
Niveau 4
Niveau 4
Messages : 65
Enregistré le : sam. 22 déc. 2007 15:46
Status : Hors ligne

[Tuto] Simuler les frappes de clavier

#1

Message 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 )
Nao
Niveau 2
Niveau 2
Messages : 21
Enregistré le : mar. 31 janv. 2012 20:41
Status : Hors ligne

Re: [Tuto] Simuler les frappes de clavier

#2

Message 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
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Tuto] Simuler les frappes de clavier

#3

Message 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.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Nao
Niveau 2
Niveau 2
Messages : 21
Enregistré le : mar. 31 janv. 2012 20:41
Status : Hors ligne

Re: [Tuto] Simuler les frappes de clavier

#4

Message 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.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Tuto] Simuler les frappes de clavier

#5

Message 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.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Nao
Niveau 2
Niveau 2
Messages : 21
Enregistré le : mar. 31 janv. 2012 20:41
Status : Hors ligne

Re: [Tuto] Simuler les frappes de clavier

#6

Message 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.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Tuto] Simuler les frappes de clavier

#7

Message 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:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
anje84
Niveau 2
Niveau 2
Messages : 22
Enregistré le : ven. 10 avr. 2015 14:00
Status : Hors ligne

Re: [Tuto] Simuler les frappes de clavier

#8

Message 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 :<...>
Modifié en dernier par mikell le sam. 11 avr. 2015 12:15, modifié 1 fois.
Raison : suppression de la citation intégrale du post 1
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [Tuto] Simuler les frappes de clavier

#9

Message 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" )
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [Tuto] Simuler les frappes de clavier

#10

Message par mikell »

Une utilisation judicieuse de WinTitleMatchMode pourrait (aussi) grandement te simplifier la vie
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [Tuto] Simuler les frappes de clavier

#11

Message 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}")
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
M3rlin71
Niveau 1
Niveau 1
Messages : 2
Enregistré le : jeu. 27 août 2015 16:49
Status : Hors ligne

Re: [Tuto] Simuler les frappes de clavier

#12

Message 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
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [Tuto] Simuler les frappes de clavier

#13

Message 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 ( )
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
M3rlin71
Niveau 1
Niveau 1
Messages : 2
Enregistré le : jeu. 27 août 2015 16:49
Status : Hors ligne

Re: [Tuto] Simuler les frappes de clavier

#14

Message par M3rlin71 »

Bonjour Orax,

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