SendKeys Class

Définition

Fournit des méthodes permettant d'envoyer des séquences de touches à une application Provides methods for sending keystrokes to an application.

public class SendKeys
Héritage
SendKeys

Exemples

L'exemple de code suivant illustre l'utilisation de la méthode Send.The following code example demonstrates how to use the Send method. Pour exécuter l’exemple, collez le code suivant dans un formulaire nommé Form1 contenant un bouton nommé Button1.To run the example, paste the following code in a form called Form1 containing a button called Button1. Vérifiez que les événements click sont associés à leurs méthodes de gestion des événements dans cet exemple.Ensure the click events are associated with their event-handling methods in this example. Le contrôle bouton TabIndex propriété doit être définie sur 0.The button control's TabIndex property should be set to 0. Lorsque l’exemple est en cours d’exécution, double-cliquez sur le formulaire pour déclencher click du bouton événements.When the example is running, double-click the form to trigger the button's click event.

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

Utilisez SendKeys pour envoyer des séquences de touches et combinaisons à l’application active de la frappe.Use SendKeys to send keystrokes and keystroke combinations to the active application. Cette classe ne peut pas être instanciée.This class cannot be instantiated. Pour envoyer une séquence de touches à une classe et poursuivre immédiatement le flux de votre programme, utilisez Send.To send a keystroke to a class and immediately continue with the flow of your program, use Send. Pour attendre tous les processus démarrés par la séquence de touches, utilisez SendWait.To wait for any processes started by the keystroke, use SendWait.

Chaque clé est représentée par un ou plusieurs caractères.Each key is represented by one or more characters. Pour spécifier un seul caractère du clavier, utilisez le caractère lui-même.To specify a single keyboard character, use the character itself. Par exemple, pour représenter la lettre A, passez la chaîne « A » à la méthode.For example, to represent the letter A, pass in the string "A" to the method. Pour représenter plusieurs caractères, ajoutez chaque caractère supplémentaire à celle qui précèdent.To represent more than one character, append each additional character to the one preceding it. Pour représenter les lettres A, B et C, spécifiez le paramètre en tant que « ABC ».To represent the letters A, B, and C, specify the parameter as "ABC".

Signe plus (+), signe insertion (^), signe de pourcentage (%), tilde (~), les parenthèses () ont des significations spéciales pour SendKeys.The plus sign (+), caret (^), percent sign (%), tilde (~), and parentheses () have special meanings to SendKeys. Pour spécifier un de ces caractères, placez-le entre accolades ({}).To specify one of these characters, enclose it within braces ({}). Par exemple, pour spécifier le signe plus, utilisez {+} ».For example, to specify the plus sign, use "{+}". Pour spécifier les caractères d’accolade, utilisez « {{}« et »{}} ».To specify brace characters, use "{{}" and "{}}". Crochets ([]) n’ont aucune signification spéciale pour SendKeys, mais vous devez les placer entre accolades.Brackets ([ ]) have no special meaning to SendKeys, but you must enclose them in braces. Dans d’autres applications, ils ont une signification spéciale qui peut être importante lorsque l’échange dynamique de données (DDE) se produit.In other applications, brackets do have a special meaning that might be significant when dynamic data exchange (DDE) occurs.

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.If your application is intended for international use with a variety of keyboards, the use of Send could yield unpredictable results and should be avoided.

Pour spécifier des caractères qui ne sont pas affichées lorsque vous appuyez sur une touche, telles que l’entrée ou de tabulation et de clés qui représentent des actions plutôt que des caractères, utilisez les codes dans le tableau suivant.To specify characters that aren't displayed when you press a key, such as ENTER or TAB, and keys that represent actions rather than characters, use the codes in the following table.

ToucheKey CodeCode
RETOUR ARRIÈREBACKSPACE {Retour arrière}, {BS,} ou {RET}{BACKSPACE}, {BS}, or {BKSP}
BREAKBREAK SAUT DE {}{BREAK}
VERR. MAJCAPS LOCK {CAPSLOCK}{CAPSLOCK}
Suppr ou DELETEDEL or DELETE {SUPPRIMER} ou {Suppr}{DELETE} or {DEL}
BASDOWN ARROW {BAS}{DOWN}
FINEND {FIN}{END}
ENTRÉEENTER {ENTER} ou ~{ENTER}or ~
ÉCHAPESC {ÉCHAP}{ESC}
AIDEHELP {HELP}{HELP}
ORIGINEHOME {ACCUEIL}{HOME}
INS ou INSERTINS or INSERT {Insérer le} ou {INS}{INSERT} or {INS}
GAUCHELEFT ARROW {LEFT}{LEFT}
VERR. NUMNUM LOCK {NUM}{NUMLOCK}
Page suivantePAGE DOWN {PG. SUIV}{PGDN}
Page précédentePAGE UP {PG PRÉC.}{PGUP}
IMPR. ÉCRANPRINT SCREEN {PRTSC} (réservé pour une utilisation ultérieure){PRTSC} (reserved for future use)
DROITERIGHT ARROW {RIGHT}{RIGHT}
ARRÊT DÉFILSCROLL LOCK {ARRÊT DÉFIL}{SCROLLLOCK}
TABTAB {TAB}{TAB}
HAUTUP ARROW {DISTANCE}{UP}
F1F1 {F1}{F1}
F2F2 {F2}{F2}
F3F3 {F3}{F3}
F4F4 {F4}{F4}
F5F5 {F5}{F5}
F6F6 {F6}{F6}
F7F7 {F7}{F7}
F8F8 {F8}{F8}
F9F9 {F9}{F9}
F10F10 {F10}{F10}
F11F11 {F11}{F11}
F12F12 {F12}{F12}
F13F13 {F13}{F13}
F14F14 {F14}{F14}
F15F15 {F15}{F15}
F16F16 {F16}{F16}
Addition du pavé numériqueKeypad add {ADD}{ADD}
Soustraction du pavé numériqueKeypad subtract {SOUSTRAIRE}{SUBTRACT}
Multiplication du pavé numériqueKeypad multiply {MULTIPLIER}{MULTIPLY}
Division du pavé numériqueKeypad divide {DIVISION}{DIVIDE}

Pour spécifier des touches combinées avec n’importe quelle combinaison de MAJ, CTRL et ALT enfoncées, faites précéder le code de touche avec un ou plusieurs des codes suivants.To specify keys combined with any combination of the SHIFT, CTRL, and ALT keys, precede the key code with one or more of the following codes.

ToucheKey CodeCode
MAJSHIFT +
CTRLCTRL ^
ALTALT %

Pour spécifier que n’importe quelle combinaison des touches MAJ, CTRL et ALT doit être maintenu enfoncé tandis que d’autres touches sont utilisées, mettez le code pour ces clés entre parenthèses.To specify that any combination of SHIFT, CTRL, and ALT should be held down while several other keys are pressed, enclose the code for those keys in parentheses. Par exemple, pour la touche la touche MAJ ENFONCÉE pendant que E et C sont utilisées, indiquez « + (EC) ».For example, to specify to hold down SHIFT while E and C are pressed, use "+(EC)". Pour maintenez la touche MAJ ENFONCÉE et E est enfoncé, suivie de C sans MAJ, indiquez « + EC ».To specify to hold down SHIFT while E is pressed, followed by C without SHIFT, use "+EC".

Pour spécifier des clés extensibles, utilisez la forme {touche nombre}.To specify repeating keys, use the form {key number}. Vous devez placer un espace entre la clé et le nombre.You must put a space between key and number. Par exemple, {LEFT 42} signifie appuyez sur la touche GAUCHE 42 fois. {h 10} indique que la touche que h 10 fois.For example, {LEFT 42} means press the LEFT ARROW key 42 times; {h 10} means press H 10 times.

Note

Comme il n’existe aucune méthode managée permettant d’activer une autre application, vous pouvez utiliser cette classe dans l’application actuelle ou utiliser les méthodes Windows natives, telles que FindWindow et SetForegroundWindow, pour forcer le focus sur d’autres applications.Because there is no managed method to activate another application, you can either use this class within the current application or use native Windows methods, such as FindWindow and SetForegroundWindow, to force focus on other applications.

Note

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.The SendKeys class has been updated for the .NET Framework 3.0 to enable its use in applications that run on 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.The enhanced security of Windows Vista (known as User Account Control or UAC) prevents the previous implementation from working as expected.

La classe SendKeys est vulnérable aux problèmes de synchronisation, que certains développeurs ont dû contourner.The SendKeys class is susceptible to timing issues, which some developers have had to work around. 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.The updated implementation is still susceptible to timing issues, but is slightly faster and may require changes to the workarounds. La classe SendKeys tente d'abord d'utiliser l'implémentation précédente et, en cas d'échec, utilise la nouvelle implémentation.The SendKeys class tries to use the previous implementation first, and if that fails, uses the new implementation. Ainsi, la classe SendKeys peut se comporter différemment sur différents systèmes d'exploitation.As a result, the SendKeys class may behave differently on different operating systems. 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.Additionally, when the SendKeys class uses the new implementation, the SendWait method will not wait for messages to be processed when they are sent to another process.

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.If your application relies on consistent behavior regardless of the operating system, you can force the SendKeys class to use the new implementation by adding the following application setting to your app.config file.

<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" .To force the SendKeys class to use the previous implementation, use the value "JournalHook" instead.

Méthodes

Equals(Object)

Détermine si l'objet spécifié est identique à l'objet actuel. Determines whether the specified object is equal to the current object.

(Inherited from Object)
Flush()

Traite tous les messages Windows présents dans la file d'attente de messages. Processes all the Windows messages currently in the message queue.

GetHashCode()

Fait office de fonction de hachage par défaut. Serves as the default hash function.

(Inherited from Object)
GetType()

Obtient le Type de l'instance actuelle. Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel. Creates a shallow copy of the current Object.

(Inherited from Object)
Send(String)

Envoie des séquences de touches à l'application active. Sends keystrokes to the active application.

SendWait(String)

Envoie les touches données à l'application active, puis attend que les messages soient traités. Sends the given keys to the active application, and then waits for the messages to be processed.

ToString()

Retourne une chaîne qui représente l'objet actuel. Returns a string that represents the current object.

(Inherited from Object)

S’applique à