Functions > Keyboard >


Send

Envoie des frappes clavier simulées à la fenêtre active.

Send ( "keys" [, flag = 0] )

Paramètres

keys La séquence de touches à envoyer.
flag [optionnel] Change la manière dont les touches sont envoyées:
    $SEND_DEFAULT (0) = Le texte contient des caractères spéciaux comme + et ! qui sont utilisés pour indiquer les touches SHIFT et ALT (défaut).
    $SEND_RAW (1) = Les touches sont envoyées telles quelles.

Les constantes sont définies dans "AutoItConstants.au3".

Valeur de retour

Aucune.

Remarques

Consultez l'Appendice pour quelques conseils d'utilisation de Send(). AutoIt peut envoyer tous les caractères ASCII et ASCII étendu (0-255). Pour envoyer des caractères UNICODE, vous devez utiliser l'option "ASC" et le code du caractère que vous voulez envoyer (voir {ASC} au bas de la table ci-dessous).

La syntaxe de la commande Send() est similaire à celle de ScriptIt et à celle de la commande "SendKeys" de Visual Basic. Les caractères sont envoyés tels qu'ils sont écrits à l'exception des caractères suivants:

'!'
Ce caractère dit à AutoIt de simuler l'appui de la touche ALT. Par exemple, Send("Ceci est un texte!a") va envoyer les touches "Ceci est un texte" puis presser "ALT+a".

Note: Certains programmes sont très difficiles quand à l'utilisation des lettres majuscules combinées avec l'appui sur ALT. Par exemple, "!A" est différent de "!a". Le premier code dit ALT+SHIFT+A et le deuxième ALT+a. Si vous avez un doute, utilisez les minuscules!

'+'
Ce caractère dit à AutoIt de simuler l'appui de la touche SHIFT. Par exemple, Send("Hell+o") va envoyer le texte "Hello", et Send("!+a") va envoyer "ALT+SHIFT+a".

'^'
Ce caractère dit à AutoIt de simuler l'appui de la touche CTRL. Par exemple, Send("^!a") va envoyer "CTRL+ALT+a".

Note: Certains programmes sont très difficiles quand à l'utilisation des lettres majuscules combinées avec l'appui sur CTRL. Par exemple, "^A" est différent de "^a". Le premier code dit CTRL+SHIFT+A et le deuxième CTRL+a. Si vous avez un doute, utilisez les minuscules.

'#'
Ce caractère dit à AutoIt de simuler l'appui de la touche Windows. Par exemple, Send("#r") va envoyer Win+r qui va lancer la boîte de dialogue 'Exécuter' de Windows.


Vous pouvez utiliser SendCapslockMode pour désactiver le verrouillage majuscule au début de chaque utilisation de Send() et le réactiver à la fin.
Cependant, si un utilisateur maintient l'appui sur SHIFT au démarrage de la fonction Send(), le texte peut être envoyé en majuscule.
Une manière de contourner est d'utiliser Send("{SHIFTDOWN}{SHIFTUP}") avant les autres utilisations de Send().

Certains claviers comme le clavier Tchèque envoient des caractères différents lors de l'appui sur la touche Shift ou pendant que le VERROUILLAGE MAJUSCULE est activé. En raison du fonctionnement de la fonction Send, (les caractères majuscules sont envoyés comme des minuscules affublées d'un SHIFT) l'envoi des majuscules ne marchera pas.
Certains caractères spéciaux peuvent être envoyés mais doivent être encadrés de crochets.

Note: Windows n'autorise pas la simulation de la combinaison "CTRL-ALT-DEL"!

Commande Send() (Si flag = 0) Caractères envoyés
{!} !
{#} #
{+} +
{^} ^
{{} {
{}} }
{SPACE} Espace
{ENTER} Touche ENTRÉE du clavier principal
{ALT} ALT
{BACKSPACE} ou {BS} Touche RETOUR ARRIÈRE
{DELETE} ou {DEL} Touche SUPP
{UP} Flèche haut
{DOWN} Flèche bas
{LEFT} Flèche gauche
{RIGHT} Flèche droite
{HOME} HOME
{END} FIN
{ESCAPE} or {ESC} Touche ÉCHAP
{INSERT} or {INS} Touche INS
{PGUP} PageUp
{PGDN} PageDown
{F1} à {F12} Touches de fonctions
{TAB} Tabulation
{PRINTSCREEN} Impr. Écran
{LWIN} Touche Windows de gauche
{RWIN} Touche Windows de droite
{NUMLOCK on} Pavé Numérique (on/off/toggle)
{CAPSLOCK off} Verrouillage Majuscule (on/off/toggle)
{SCROLLLOCK toggle} SCROLLLOCK (on/off/toggle)
{BREAK} Pour Ctrl+Break du traitement
{PAUSE} PAUSE
{NUMPAD0} - {NUMPAD9} Chiffres du pavé numérique
{NUMPADMULT} Multiplication du pavé numérique
{NUMPADADD} Addition du pavé numérique
{NUMPADSUB} Soustraction du pavé numérique
{NUMPADDIV} Division du pavé numérique
{NUMPADDOT} Point du pavé numérique
{NUMPADENTER} Touche ENTRÉE du pavé numérique
{APPSKEY} Touche des applications Windows
{LALT} Alt gauche
{RALT} Alt droit
{LCTRL} Ctrl gauche
{RCTRL} Ctrl droit
{LSHIFT} Shift gauche
{RSHIFT} Shift droit
{SLEEP} Touche de mise hors tension de l'ordinateur
{ALTDOWN} Maintient appuyé la touche ALT jusqu'à l'envoi de la touche {ALTUP}
{SHIFTDOWN} Maintient appuyé la touche SHIFT jusqu'à l'envoi de la touche {SHIFTUP}
{CTRLDOWN} Maintient appuyé la touche CTRL jusqu'à l'envoi de la touche {CTRLUP}
{LWINDOWN} Maintient appuyé la touche Windows de gauche jusqu'à l'envoi de la touche {LWINUP}
{RWINDOWN} Maintient appuyé la touche Windows de droite jusqu'à l'envoi de la touche {RWINUP}
{ASC nnnn} Envoi la combinaison ALT+nnnn
{BROWSER_BACK} Sélectionne le bouton "Arrière" du navigateur
{BROWSER_FORWARD} Sélectionne le bouton "Avant" du navigateur
{BROWSER_REFRESH} Sélectionne le bouton "actualiser" du navigateur
{BROWSER_STOP} Sélectionne le bouton "stop" du navigateur
{BROWSER_SEARCH} Sélectionne le bouton "recherche" du navigateur
{BROWSER_FAVORITES} Sélectionne le bouton "favoris" du navigateur
{BROWSER_HOME} Lance le navigateur internet sur la page d'accueil
{VOLUME_MUTE} Coupe le son
{VOLUME_DOWN} Réduit le volume du son
{VOLUME_UP} Augmente le volume du son
{MEDIA_NEXT} Sélectionne la prochaine piste dans le lecteur Media Player
{MEDIA_PREV} Sélectionne la piste précédente dans le lecteur Media Player
{MEDIA_STOP} Arrête la musique du lecteur Média Player
{MEDIA_PLAY_PAUSE} Met en pause/marche le son dans le lecteur Média Player
{LAUNCH_MAIL} Lance la messagerie Internet
{LAUNCH_MEDIA} Lance le lecteur Média Player
{LAUNCH_APP1} Lance l'application 1 définie par l'utilisateur
{LAUNCH_APP2} Lance l'application 2 définie par l'utilisateur
{OEM_102} Either the angle bracket key or the backslash key on the RT 102-key keyboard

Pour envoyer la valeur ASCII de A (identique à l'appui de ALT+065 sur le pavé numérique)
     Send("{ASC 065}")

(Quand vous devez utiliser un code ASCII à deux chiffres, vous devez mettre un 0 devant, sinon le code de page obsolète 437 est utilisé).

Pour envoyer des caractères UNICODE, entrez le code des caractères (décimal ou hexadécimal), par exemple pour envoyer un caractère chinois.
    Send("{ASC 2709}") ou Send("{ASC 0xA95}")


Des touches seules peuvent aussi être répétées, comme dans les exemples ci-dessous.
    Send("{DEL 4}") ; Envoyer la touche DEL 4 fois
    Send("{S 30}") ; Envoyer 30 fois le caractère 'S'
    Send("+{TAB 4}") ; Appuyer 4 fois sur SHIFT+TAB

Aucune touche n'est envoyée si le nombre est 0, ce qui permet de définir ce nombre par programme:
    Send("{M " & $iCount & "}") ;Presse la touche M plusieurs fois suivant le contenu de la variable $iCount.


Pour laisser une touche appuyée (généralement utile pour les jeux)
    Send("{a down}") ; Laisse la touche 'A' appuyée
    Send("{a up}") ; Libère la touche 'A'

Pour fixer l'état des touches 'Verrouillage Majuscule', 'Verrouillage Pavé numérique' et 'Arrêt défilement' :
    Send("{NumLock on}") ; Change l'état du pavé numérique (NumLock) en On
    Send("{CapsLock off}") ; Change l'état des majuscule (CapsLock) en Off
    Send("{ScrollLock toggle}") ; Bascule l'état de l'arrêt défilement (ScrollLock)

Si vous souhaitez utiliser une variable pour le nombre de répétition, essayez
    $n = 4
    Send("+{TAB " & $n & "}")

Si vous souhaitez envoyer la valeur ASCII 'A' 4 fois, essayez
    $x = Chr(65)
    Send("{" & $x & " 4}")

La plupart des ordinateurs portable possèdent une touche spéciale Fn. Cette touche ne peut pas être simulée.

Note: En fixant le paramètre à 1 les combinaisons 'spéciales' qui suivent seront désactivés. Ce paramètre est très utile quand vous voulez envoyer un texte copié d'une variable et que vous voulez envoyer le texte exactement comme il est écrit.


Par exemple, dans le panneau de configuration, ouvrez 'Options des dossiers' et essayez ce qui suit :

Send("{TAB}") Navigue au contrôle suivant (button, checkbox, etc)
Send("+{TAB}") Navigue au contrôle précédent.
Send("^{TAB}") Navigue à l'onglet suivant (fenêtre de dialogue à onglet)
Send("^+{TAB}") Navigue à l'onglet précédent.
Send("{SPACE}") Peut être utilisé pour commuter un 'checkbox' ou cliquer un 'button'.
Send("{+}") Typiquement, coche un 'checkbox' (si il est un "réel" checkbox.)
Send("{-}") Typiquement, décoche un 'checkbox'.
Send("{NumPadMult}") Développe récursivement les répertoires d'un 'SysTreeView32'.

Utilisez les 'combos' avec la touche Alt pour accéder aux éléments du menu. Vous pouvez également ouvrir le bloc-notes et tester ceci:
Send("!f") Send() Alt+f, la touche d'accès au menu 'Fichier' du Bloc-notes. Essayez d'autres lettres!

Send("{DOWN}") Descend dans le menu.
Send("{UP}") Monte dans le menu.
Send("{LEFT}") Va vers la gauche vers un nouveau menu ou développe un sous-menu.
Send("{RIGHT}") Va vers la droite vers un nouveau menu ou réduit un sous-menu.


Quand un script est lancé sur un ordinateur distant à travers un programme tiers comme psexec (www.sysinternals.com) ou beyondexec (www.beyondlogic.org), il est nécessaire, spécialement en envoyant des touches à un programme lancé par le script via la fonction Run(), d'utiliser ControlSend() ou d'autres fonctions ControlXXX pour communiquer directement avec le contrôle. Send() même avec Opt("SendAttachMode", 1) ne fonctionnera pas.
Utilisez le mode -s quand vous envoyez des touches peut vous aider à avoir des meilleurs droits sur l'ordinateur distant.

Opt("SendKeyDelay",...) change la longueur de la pause entre les touches consécutives.
Opt("SendKeyDownDelay",...) change la longueur de la pause d'une touche enfoncée avant qu'elle ne soit libérée pendant une simulation.
Définissez "SendKeyDelay" et "SendKeyDownDelay" à 0 pour enlever tous les délais lors de l'envoi de touches. Cela peut être nécessaire dans certaines circonstances, par exemple, lors du verrouillage du système ("#l"), il peut être nécessaire d'enlever les délais afin de prévoir une touche WIN restée enfoncée.

En relation

BlockInput, ControlSend, HotKeySet, SendAttachMode (Option), SendKeepActive, SendKeyDelay (Option), SendKeyDownDelay (Option), WinMenuSelectItem

Exemple

Example()

Func Example()
    ; Simule la combinaison de touches Win + R pour ouvrir la fenêtre de dialogue Exécuter.
    Send("#r")

    ; Attend 10 secondes que la fenêtre de dialogue Exécuter apparaît.
    WinWait("Run", "", 10)

    ; Simule une entrée dans notepad.exe et presse la touche 'ENTER'.
    Send("notepad.exe{Enter}")

    ; Attend 10 secondes pour que la fenêtre du bloc-notes apparaisse.
    Local $hWnd = WinWait("[CLASS:Notepad]", "", 10)

    ; Simule l'entrée de la chaîne suivante et appuie sur la touche "F5" pour entrer la date et l'heure dans le contrôle d'édition du bloc-notes.
    Send("Date et heure d'aujourd'hui: {F5}")

    ; Ferme la fenêtre du Bloc-notes en utilisant le handle retourné par WinWait.
    WinClose($hWnd)

    ; Maintenant, une fenêtre s'ouvrira et demandera d'enregistrer les modifications, le nom de classe de la fenêtre est
    ;"#32770" et la simulation de la touche "TAB" pour passer au deuxième bouton dans lequel le "ENTER" est simulé pour ne pas "Enregistrer le fichier"
    WinWaitActive("[CLASS:#32770]")
    Sleep(500)
    Send("{TAB}{ENTER}")
EndFunc   ;==>Example