SendKeys Classe

Définition

Fournit des méthodes permettant d'envoyer des séquences de touches à une application

public ref class SendKeys
public class SendKeys
type SendKeys = class
Public Class SendKeys
Héritage
SendKeys

Exemples

L'exemple de code suivant illustre l'utilisation de la méthode Send. Pour exécuter l’exemple, collez le code suivant dans un formulaire appelé Form1 contenant un bouton appelé Button1. Vérifiez que les événements click sont associés à leurs méthodes de gestion des événements dans cet exemple. La propriété du TabIndex contrôle bouton doit être définie sur 0. Lorsque l’exemple est en cours d’exécution, double-cliquez sur le formulaire pour déclencher l’événement click du bouton.

private:
   // Clicking Button1 causes a message box to appear.
   void Button1_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      MessageBox::Show( "Click here!" );
   }

   // Use the SendKeys.Send method to raise the Button1 click event 
   // and display the message box.
   void Form1_DoubleClick( Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      
      // Send the enter key; since the tab stop of Button1 is 0, this
      // will trigger the click event.
      SendKeys::Send( "{ENTER}" );
   }

// Clicking Button1 causes a message box to appear.
private void Button1_Click(System.Object sender, System.EventArgs e)
{
    MessageBox.Show("Click here!");
}

// Use the SendKeys.Send method to raise the Button1 click event 
// and display the message box.
private void Form1_DoubleClick(object sender, System.EventArgs e)
{

    // Send the enter key; since the tab stop of Button1 is 0, this
    // will trigger the click event.
    SendKeys.Send("{ENTER}");
}

' Clicking Button1 causes a message box to appear.
Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click
    MessageBox.Show("Click here!")
End Sub


' Use the SendKeys.Send method to raise the Button1 click event 
' and display the message box.
Private Sub Form1_DoubleClick(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles MyBase.DoubleClick

    ' Send the enter key; since the tab stop of Button1 is 0, this
    ' will trigger the click event.
    SendKeys.Send("{ENTER}")
End Sub

Remarques

Permet SendKeys d’envoyer des combinaisons de touches et de séquences de touches à l’application active. Cette classe ne peut pas être instanciée. Pour envoyer une frappe à une classe et continuer immédiatement avec le flux de votre programme, utilisez Send. Pour attendre que les processus démarrés par la frappe, utilisez SendWait.

Chaque clé est représentée par un ou plusieurs caractères. Pour spécifier un caractère de clavier unique, utilisez le caractère lui-même. Par exemple, pour représenter la lettre A, passez la chaîne « A » à la méthode. Pour représenter plusieurs caractères, ajoutez chaque caractère supplémentaire à celui précédent. Pour représenter les lettres A, B et C, spécifiez le paramètre comme « ABC ».

Le signe plus (+), caret (^), le signe de pourcentage (%), tilde (~) et les parenthèses () ont des significations spéciales à SendKeys. Pour spécifier l’un de ces caractères, placez-le dans les accolades ({}). Par exemple, pour spécifier le signe plus, utilisez « {+} ». Pour spécifier des caractères accolades, utilisez « {{} » et « {}} ». Les crochets ([ ]) n’ont aucune signification spéciale à SendKeys, mais vous devez les placer dans des accolades. Dans d’autres applications, les crochets ont un sens particulier qui peut être significatif lorsque l’échange de données dynamique (DDE) se produit.

Attention

Si votre application est prévue pour une utilisation internationale avec différents claviers, l'utilisation de Send peut produire des résultats imprévisibles et doit être évitée.

Pour spécifier des caractères qui ne s’affichent pas lorsque vous appuyez sur une touche, telle que Entrée ou Tab, et des touches qui représentent des actions plutôt que des caractères, utilisez les codes du tableau suivant.

Clé Code
Ret.arr {BACKSPACE}, {BS}ou {BKSP}
BREAK {BREAK}
VERR. MAJ {CAPSLOCK}
DEL ou DELETE {DELETE} ou {DEL}
Bas {DOWN}
FIN {END}
ENTRÉE {ENTRÉE} ou ~
ÉCHAP {ESC}
HELP {HELP}
Origine {HOME}
INS ou INSERT {INSERT} ou {INS}
Gauche {LEFT}
VERROUILLAGE NUM {NUMLOCK}
Pg. suiv {PGDN}
Pg. préc {PGUP}
ÉCRAN D’IMPRESSION {PRTSC} (réservé pour une utilisation ultérieure)
Flèche droite {RIGHT}
VERROUILLAGE DE DÉFILEMENT {SCROLLLOCK}
Tab {TAB}
Flèche haut {UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}
Touches d’ajout {ADD}
Soustraction du pavé numérique {SOUSTRAIT}
Multiplication du pavé clavier {MULTIPLIE}
Division du pavé clavier {DIVIDE}

Pour spécifier des touches combinées à n’importe quelle combinaison des touches Maj, Ctrl et Alt, faites précéder le code de touche avec un ou plusieurs des codes suivants.

Clé Code
PÉRIODE DE TRAVAIL +
CTRL ^
Alt %

Pour spécifier que n’importe quelle combinaison de touches Maj, Ctrl et Alt doit être enfoncée alors que plusieurs autres touches sont enfoncées, placez le code de ces touches entre parenthèses. Par exemple, pour spécifier la touche Maj enfoncée pendant que E et C sont enfoncés, utilisez « +(EC) ». Pour spécifier la touche Maj enfoncée pendant que E est enfoncée, suivie de C sans Maj, utilisez « +EC ».

Pour spécifier des clés répétées, utilisez le formulaire {numéro de clé}. Vous devez placer un espace entre la clé et le nombre. Par exemple, {LEFT 42} signifie appuyer sur la touche Flèche gauche 42 fois ; {h 10} signifie appuyer sur H 10 fois.

Notes

Étant donné qu’il n’existe aucune méthode managée pour activer une autre application, vous pouvez utiliser cette classe dans l’application actuelle ou utiliser des méthodes Windows natives, telles que FindWindow et SetForegroundWindow, pour forcer le focus sur d’autres applications.

Notes

La classe SendKeys a été mise à jour pour .NET Framework 3.0 pour pouvoir être utilisée dans les applications qui s'exécutent sur Windows Vista. La sécurité renforcée de Windows Vista (également appelée Contrôle de compte d'utilisateur) empêche le fonctionnement correcte de l'implémentation précédente.

La classe SendKeys est vulnérable aux problèmes de synchronisation, que certains développeurs ont dû contourner. L'implémentation mise à jour est toujours vulnérable aux problèmes de synchronisation, mais est légèrement plus rapide et peut nécessiter certaines modifications des solutions de contournement. La classe SendKeys tente d'abord d'utiliser l'implémentation précédente et, en cas d'échec, utilise la nouvelle implémentation. Ainsi, la classe SendKeys peut se comporter différemment sur différents systèmes d'exploitation. En outre, quand la classe SendKeys utilise la nouvelle implémentation, la méthode SendWait n'attend pas que les messages soient traités quand ils sont envoyés à un autre processus.

Si votre application repose sur un comportement cohérent indépendamment du système d'exploitation, vous pouvez forcer la classe SendKeys à utiliser la nouvelle implémentation en ajoutant le paramètre d'application suivant à votre fichier app.config.

<appSettings>

<add key="SendKeys" value="SendInput"/>

</appSettings>

Pour forcer la classe SendKeys à utiliser l'implémentation précédente, utilisez plutôt la valeur "JournalHook" .

Méthodes

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
Flush()

Traite tous les messages Windows présents dans la file d'attente de messages.

GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
Send(String)

Envoie des séquences de touches à l'application active.

SendWait(String)

Envoie les touches données à l'application active, puis attend que les messages soient traités.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

S’applique à