SendKeys SendKeys SendKeys SendKeys Class

Definición

Proporciona métodos para enviar pulsaciones de tecla a una aplicación. Provides methods for sending keystrokes to an application.

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

Ejemplos

En el ejemplo de código siguiente se muestra cómo utilizar el método Send.The following code example demonstrates how to use the Send method. Para ejecutar el ejemplo, pegue el código siguiente en un formulario denominado Form1 que contenga un botón denominado Button1.To run the example, paste the following code in a form called Form1 containing a button called Button1. Asegúrese de que los eventos de clic se asocian con sus métodos de control de eventos en este ejemplo.Ensure the click events are associated with their event-handling methods in this example. El control de botón TabIndex propiedad debe establecerse en 0.The button control's TabIndex property should be set to 0. Cuando se ejecuta el ejemplo, haga doble clic en el formulario para desencadenar el evento click eventos.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

Comentarios

Use SendKeys para enviar pulsaciones de teclas y combinaciones a la aplicación activa de pulsaciones de teclas.Use SendKeys to send keystrokes and keystroke combinations to the active application. No se puede crear una instancia de esta clase.This class cannot be instantiated. Para enviar una pulsación de tecla a una clase y continuar inmediatamente con el flujo del programa, use Send.To send a keystroke to a class and immediately continue with the flow of your program, use Send. Para esperar a que los procesos iniciados por la pulsación de tecla, utilice SendWait.To wait for any processes started by the keystroke, use SendWait.

Cada clave se representa mediante uno o más caracteres.Each key is represented by one or more characters. Para especificar un carácter único teclado, use el propio carácter.To specify a single keyboard character, use the character itself. Por ejemplo, para representar la letra A, pasar la cadena "A" al método.For example, to represent the letter A, pass in the string "A" to the method. Para representar más de un carácter, agregue cada carácter adicional a la que le precede.To represent more than one character, append each additional character to the one preceding it. Para representar las letras A, B y C, especifique el parámetro como "ABC".To represent the letters A, B, and C, specify the parameter as "ABC".

El signo más (+), símbolo de intercalación (^), signo de porcentaje (%), tilde (~) y paréntesis () tienen un significado especial para SendKeys.The plus sign (+), caret (^), percent sign (%), tilde (~), and parentheses () have special meanings to SendKeys. Para especificar uno de estos caracteres, inclúyalo entre llaves ({}).To specify one of these characters, enclose it within braces ({}). Por ejemplo, para especificar el signo más, use "{+}".For example, to specify the plus sign, use "{+}". Para especificar caracteres de llave, use "{{}"y"{}}".To specify brace characters, use "{{}" and "{}}". Corchetes ([]) no tienen ningún significado especial para SendKeys, pero debe encerrar entre llaves.Brackets ([ ]) have no special meaning to SendKeys, but you must enclose them in braces. En otras aplicaciones, los corchetes tienen un significado especial que puede ser significativo cuando se produce el intercambio dinámico de datos (DDE).In other applications, brackets do have a special meaning that might be significant when dynamic data exchange (DDE) occurs.

Precaución

Si su aplicación está pensada para su uso internacional con distintos teclados, Send puede producir resultados imprevisibles y debe evitarse.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.

Para especificar caracteres que no se muestran cuando se presiona una tecla, como ENTRAR o TAB y las claves que representan acciones en lugar de caracteres, utilice los códigos de la tabla siguiente.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.

KeyKey CódigoCode
RETROCESOBACKSPACE {BACKSPACE}, {BS} o {retroceso}{BACKSPACE}, {BS}, or {BKSP}
SALTOBREAK SALTO DE {}{BREAK}
BLOCK MAYÚSCAPS LOCK {CAPSLOCK}{CAPSLOCK}
SUPR o DELETEDEL or DELETE {ELIMINAR} o {DEL}{DELETE} or {DEL}
FLECHA ABAJODOWN ARROW {ABAJO}{DOWN}
FINEND {END}{END}
ENTRARENTER {ENTER} o ~{ENTER} or ~
ESCESC {ESC}{ESC}
AYUDAHELP AYUDA DE {}{HELP}
INICIOHOME {PRINCIPAL}{HOME}
INS o INSERTINS or INSERT {Inserte} o {INS}{INSERT} or {INS}
FLECHA IZQUIERDALEFT ARROW {LEFT}{LEFT}
BLOQ NUMNUM LOCK {BLOQ NUM}{NUMLOCK}
AV PÁGPAGE DOWN {AV PÁG}{PGDN}
RE PÁGPAGE UP {RE PÁG}{PGUP}
IMPR PANTPRINT SCREEN {IMPR PANT} (reservado para uso futuro){PRTSC} (reserved for future use)
FLECHA DERECHARIGHT ARROW {RIGHT}{RIGHT}
BLOQ DESPLSCROLL LOCK {BLOQ DESPL}{SCROLLLOCK}
TABTAB {TAB}{TAB}
FLECHA ARRIBAUP ARROW COPIA DE {}{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}
Agregue el teclado numéricoKeypad add {ADD}{ADD}
Restar de tecladoKeypad subtract {RESTAR}{SUBTRACT}
Teclado numérico multiplicarKeypad multiply {MULTIPLICAR}{MULTIPLY}
División de tecladoKeypad divide {DIVIDIR}{DIVIDE}

Para especificar las claves con cualquier combinación de la tecla MAYÚS, CTRL y ALT (teclas), anteponga el código con uno o varios de los siguientes códigos de tecla.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.

KeyKey CódigoCode
MAYÚSSHIFT +
CTRLCTRL ^
ALTALT %

Para especificar que cualquier combinación de mayúsculas, CTRL y ALT debe mantenerse mientras se presionan varias otras claves, encierre el código para esas claves entre paréntesis.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. Por ejemplo, para especificar que se mantenga presionada la tecla MAYÚS mientras se presionaron E y C, use "+ (EC)".For example, to specify to hold down SHIFT while E and C are pressed, use "+(EC)". Para especificar que se mantenga presionada la tecla MAYÚS mientras se presiona E, seguida de C sin MAYÚS, utilice "+ EC".To specify to hold down SHIFT while E is pressed, followed by C without SHIFT, use "+EC".

Para especificar las claves de repetición, use el formulario {número de clave}.To specify repeating keys, use the form {key number}. Debe incluir un espacio entre la clave y el número.You must put a space between key and number. Por ejemplo, {LEFT 42} significa presionar la tecla flecha izquierda 42 veces; {h 10} significa presionar que h 10 veces.For example, {LEFT 42} means press the LEFT ARROW key 42 times; {h 10} means press H 10 times.

Nota

Dado que no hay ningún método administrado para activar otra aplicación, puede utilizar esta clase en la aplicación actual o usar métodos nativos de Windows, como FindWindow y SetForegroundWindow, para forzar el foco en otras aplicaciones.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.

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

La clase SendKeys es susceptible de tener problemas de temporización que algunos desarrolladores han tenido que solucionar.The SendKeys class is susceptible to timing issues, which some developers have had to work around. 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.The updated implementation is still susceptible to timing issues, but is slightly faster and may require changes to the workarounds. La clase SendKeys intenta usar primero la implementación anterior y, si se produce un error, usa la nueva implementación.The SendKeys class tries to use the previous implementation first, and if that fails, uses the new implementation. Como resultado, la clase SendKeys puede comportarse de manera diferente en los distintos sistemas operativos.As a result, the SendKeys class may behave differently on different operating systems. 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.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 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.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>

Para forzar que la clase SendKeys use la implementación anterior, use el valor "JournalHook" en su lugar.To force the SendKeys class to use the previous implementation, use the value "JournalHook" instead.

Métodos

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina si el objeto especificado es igual al objeto actual. Determines whether the specified object is equal to the current object.

(Inherited from Object)
Flush() Flush() Flush() Flush()

Procesa todos los mensajes de Windows que hay actualmente en la cola de mensajes. Processes all the Windows messages currently in the message queue.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Sirve como la función hash predeterminada. Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Obtiene el Type de la instancia actual. Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficial del Object actual. Creates a shallow copy of the current Object.

(Inherited from Object)
Send(String) Send(String) Send(String) Send(String)

Envía pulsaciones de tecla a la aplicación activa. Sends keystrokes to the active application.

SendWait(String) SendWait(String) SendWait(String) 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. Sends the given keys to the active application, and then waits for the messages to be processed.

ToString() ToString() ToString() ToString()

Devuelve una cadena que representa el objeto actual. Returns a string that represents the current object.

(Inherited from Object)

Se aplica a