SendKeys Clase

Definición

Proporciona métodos para enviar pulsaciones de tecla a una aplicación.

public ref class SendKeys
public class SendKeys
type SendKeys = class
Public Class SendKeys
Herencia
SendKeys

Ejemplos

En el ejemplo de código siguiente se muestra cómo utilizar el método Send. 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

Use SendKeys para enviar pulsaciones de tecla y combinaciones de pulsaciones de tecla a la aplicación activa. No se puede crear una instancia de esta clase. Para enviar una pulsación de tecla a una clase y continuar inmediatamente con el flujo del programa, use Send. Para esperar a que se inicien los procesos iniciados por la pulsación de tecla, use SendWait.

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.

Métodos

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
Flush()

Procesa todos los mensajes de Windows que hay actualmente en la cola de mensajes.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
Send(String)

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

SendWait(String)

Envía las pulsaciones de tecla especificadas a la aplicación activa y, a continuación, espera a que se procesen los mensajes.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a