SendKeys.Send(String) Método

Definición

Envía pulsaciones de tecla a la aplicación activa.

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)

Parámetros

keys
String

Cadena de pulsaciones de tecla que se va a enviar.

Excepciones

No hay una aplicación activa a la que enviar las pulsaciones de tecla.

keys no representa pulsaciones de tecla válidas.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar el Send método . Para ejecutar el ejemplo, pegue el código siguiente en un formulario denominado Form1 que contiene un botón denominado Button1. Asegúrese de que los eventos de clic están asociados a sus métodos de control de eventos en este ejemplo. La propiedad del control de TabIndex botón debe establecerse en 0. Cuando se ejecuta el ejemplo, haga doble clic en el formulario para desencadenar el evento click del botón.

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

Comentarios

Cada clave se representa mediante uno o varios caracteres. Para especificar un solo carácter de teclado, use el propio carácter. Por ejemplo, para representar la letra A, pase la cadena "A" al método . Para representar más de un carácter, anexe cada carácter adicional al anterior. Para representar las letras A, B y C, especifique el parámetro como "ABC".

El signo más (+), el símbolo de intercalación (^), el signo de porcentaje (%), la tilde (~) y los paréntesis () tienen significados especiales para SendKeys. Para especificar uno de estos caracteres, escríbalo entre llaves ({}). Por ejemplo, para especificar el signo más, use "{+}". Para especificar caracteres de llave, use "{{}" y "{}}". Los corchetes ([ ]) no tienen ningún significado especial para SendKeys, pero debe incluirlos entre llaves. En otras aplicaciones, los corchetes tienen un significado especial que puede ser significativo cuando se produce el intercambio dinámico de datos (DDE).

Precaución

Si su aplicación está pensada para su uso internacional con distintos teclados, Send puede producir resultados imprevisibles y debe evitarse.

Para especificar caracteres que no se muestran al presionar una tecla, como ENTRAR o TAB, y las teclas que representan acciones en lugar de caracteres, use los códigos de la tabla siguiente.

Clave Código
RETROCESO {BACKSPACE}, {BS}o {BKSP}
BREAK {BREAK}
Bloq Mayús {CAPSLOCK}
SUPR o SUPR {DELETE} o {DEL}
FLECHA ABAJO {DOWN}
FIN {END}
ENTRAR {ENTER}o ~
ESC {ESC}
HELP {HELP}
INICIO {HOME}
INS o INSERT {INSERT} o {INS}
FLECHA IZQUIERDA {LEFT}
BLOQUEO NUM {NUMLOCK}
AV PÁG {PGDN}
RE PÁG {PGUP}
PANTALLA DE IMPRESIÓN {PRTSC} (reservado para uso futuro)
FLECHA DERECHA {RIGHT}
BLOQUEO DE DESPLAZAMIENTO {SCROLLLOCK}
TAB {TAB}
FLECHA ARRIBA {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}
Agregar teclado {ADD}
Resta del teclado {REST}
Multiplicación del teclado {MULTIPLY}
División del teclado {DIVIDE}

Para especificar las teclas combinadas con cualquier combinación de las teclas MAYÚS, CTRL y ALT, precede al código de tecla con uno o varios de los códigos siguientes.

Clave Código
Mayús +
CTRL ^
ALT %

Para especificar que cualquier combinación de MAYÚS, CTRL y ALT debe mantenerse presionada mientras se presionan otras teclas, incluya el código para esas teclas entre paréntesis. Por ejemplo, para especificar que mantenga presionada la tecla MAYÚS mientras se presiona E y C, use "+(EC)". Para especificar que mantenga presionada mayús mientras se presiona E, seguido de C sin MAYÚS, use "+EC".

Para especificar claves de repetición, use el formulario {número de clave}. Debe colocar un espacio entre la clave y el número. Por ejemplo, {LEFT 42} significa presionar la tecla FLECHA IZQUIERDA 42 veces; {h 10} significa presionar H 10 veces.

Nota

Dado que no hay ningún método administrado para activar otra aplicación, puede usar esta clase dentro de la aplicación actual o usar métodos nativos de Windows, como FindWindow y SetForegroundWindow, para forzar el foco en otras aplicaciones.

Nota

La clase SendKeys se ha actualizado para .NET Framework 3.0 para que se pueda usar en aplicaciones que se ejecutan en Windows Vista. La seguridad mejorada de Windows Vista (conocida como Control de cuentas de usuario o UAC) impide que la implementación anterior funcione según lo esperado.

La clase SendKeys es susceptible de tener problemas de temporización que algunos desarrolladores han tenido que solucionar. La implementación actualizada sigue siendo susceptible de tener problemas de temporización, pero es ligeramente más rápida y puede requerir cambios en las soluciones alternativas. La clase SendKeys intenta usar primero la implementación anterior y, si se produce un error, usa la nueva implementación. Como resultado, la clase SendKeys puede comportarse de manera diferente en los distintos sistemas operativos. Además, cuando la clase SendKeys usa la nueva implementación, el método SendWait no esperará a que se procesen los mensajes cuando se envían a otro proceso.

Si la aplicación depende de un comportamiento coherente independientemente del sistema operativo, puede forzar que la clase SendKeys use la nueva implementación agregando la siguiente opción de configuración de la aplicación al archivo app.config.

<appSettings>

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

</appSettings>

Para forzar que la clase SendKeys use la implementación anterior, use el valor "JournalHook" en su lugar.

Se aplica a