SendKeys.Send(String) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Envoie des séquences de touches à l'application active.
public:
static void Send(System::String ^ keys);
public static void Send (string keys);
static member Send : string -> unit
Public Shared Sub Send (keys As String)
Paramètres
- keys
- String
Chaîne de séquences de touches à envoyer.
Exceptions
Il n'existe aucune application active à laquelle envoyer des séquences de touches.
keys
ne représente pas les frappes valides.
Exemples
L’exemple de code suivant montre comment utiliser la Send méthode. 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 de 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
Chaque clé est représentée par un ou plusieurs caractères. Pour spécifier un seul caractère de clavier, 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 qui l’a précédé. Pour représenter les lettres A, B et C, spécifiez le paramètre « 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 entre accolades ({}). Par exemple, pour spécifier le signe plus, utilisez « {+} ». Pour spécifier des caractères d’accolade, utilisez « {{} » et «{} } ». Les crochets ([ ]) n’ont pas de signification spéciale pour SendKeys, mais vous devez les placer entre accolades. Dans d’autres applications, les crochets ont une signification spéciale qui peut être significative 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 sont pas affichés lorsque vous appuyez sur une touche, telle que Entrée ou Tab, et que les touches représentant 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} |
SUPPR ou SUPPR | {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} |
NUM LOCK | {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, précédez le code de touche avec un ou plusieurs des codes suivants.
Clé | Code |
---|---|
PÉRIODE DE TRAVAIL | + |
CTRL | ^ |
Alt | % |
Pour spécifier que toute combinaison de MAJ, ctrl et ALT doit être conservée 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 suspension 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é, suivi 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 de 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"
.