Windows Script Host  

Método SendKeys

Envía una o varias pulsaciones de teclas a la ventana activa (como si se escribieran en el teclado).

objeto.SendKeys(cadena)

Argumentos

objeto
Objeto WshShell.
cadena
Cadena que indica qué pulsaciones de teclas desea enviar.

Comentarios

Utilice el método SendKeys para enviar pulsaciones de teclas a aquellas aplicaciones que no tengan interfaz de automatización. La mayoría de los caracteres del teclado se representan mediante la pulsación de una única tecla. Sin embargo, algunos caracteres se forman con la combinación de varias teclas (CTRL+MAYÚS+INICIO, por ejemplo). Para enviar un único carácter del teclado, envíelo como el argumento cadena. Por ejemplo, para enviar la letra x, envíe el argumento cadena con el valor "x".

Nota   Si desea enviar un espacio, envíe la cadena " ".

Puede utilizar SendKeys para enviar más de una pulsación simultáneamente. Para ello, cree un argumento de cadena compuesta que represente una secuencia de pulsaciones, para lo que tiene que escribir una detrás de otra. Por ejemplo, para enviar las pulsaciones de las teclas a, b y c, debe enviar el argumento de cadena "abc". El método SendKeys utiliza algunos caracteres como modificadores de los caracteres normales (en lugar de utilizar su valor impreso). Este conjunto de caracteres especiales incluye los paréntesis, llaves, corchetes y:

Para enviar estos caracteres, inclúyalos entre llaves "{}". Por ejemplo, para enviar el signo más, envíe el argumento cadena con el valor "{+}". Los corchetes ("[ ]" ) no tienen un significado especial para SendKeys, pero debe incluirlos entre llaves para que funcionen correctamente con aquellas aplicaciones que sí les dan un significado especial, por ejemplo, para el intercambio dinámico de datos (DDE, Dynamic Data Exchange).

Algunas pulsaciones de teclas no generan caracteres (como ENTRAR y TAB). Otras pulsaciones representan acciones (como RETROCESO e INTERRUMPIR). Si desea enviar estos tipos de pulsaciones, envíe los argumentos que se muestran en la siguiente tabla:

Tecla Argumento
RETROCESO {BACKSPACE}, {BS} o {BKSP}
INTERRUMPIR {BREAK}
BLOQ MAYÚS {CAPSLOCK}
SUPR o SUPRIMIR {DELETE} o {DEL}
FLECHA ABAJO {DOWN}
FIN {END}
ENTRAR {ENTER} o ~
ESC {ESC}
AYUDA {HELP}
INICIO {HOME}
INS o INSERTAR {INSERT} o {INS}
FLECHA IZQUIERDA {LEFT}
BLOQ NUM {NUMLOCK}
AV PÁG {PGDN}
RE PÁG {PGUP}
IMPRIMIR PANTALLA {PRTSC}
FLECHA DERECHA {RIGHT}
BLOQ DESPL {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}

Para enviar aquellos caracteres del teclado formados por la pulsación de una tecla normal combinada con MAYÚS, CTRL o ALT, cree un argumento de cadena compuesta que represente dicha combinación. Para ello, incluya antes de la pulsación de la tecla normal uno o varios de los siguientes caracteres especiales:

Tecla Carácter especial
MAYÚSCULAS +
CTRL ^
ALT %
Nota   Estos caracteres especiales no se incluyen entre llaves cuando se utilizan de este modo.

Si desea indicar que se debe mantener pulsada una combinación especial de las teclas MAYÚSCULAS, CTRL y ALT mientras se presionan otras teclas, cree un argumento de cadena compuesta que incluya entre paréntesis las pulsaciones de teclas modificadas. Por ejemplo, para enviar una combinación de pulsaciones de teclas que indique que la tecla MAYÚSCULAS se mantiene presionada mientras:

Puede utilizar el método SendKeys para enviar un patrón de teclas formado por una misma tecla presionada varias veces seguidas. Para ello, cree un argumento de cadena compuesta que indique la pulsación de tecla que desea repetir, seguida por el número de veces que desea repetirla. Para ello, utilice un argumento de cadena compuesta con el formato {pulsación número}. Por ejemplo, para enviar diez veces la letra "x", envíe el argumento de cadena "{x 10}". Asegúrese de incluir un espacio entre la pulsación de tecla y el número.

Nota   Sólo es posible enviar como patrón de pulsación de teclas una única pulsación de tecla varias veces. Por ejemplo, puede enviar "x" diez veces, pero no puede hacer lo mismo con "Ctrl+x".
Nota   No es posible enviar la tecla IMPRIMIR PANTALLA {PRTSC} a una aplicación.

Ejemplo

El siguiente ejemplo muestra el uso de un único archivo .wsf para dos trabajos en diferentes lenguajes de comandos (VBScript y JScript). Cada trabajo ejecuta la calculadora de Windows y le envía pulsaciones de teclas para realizar un cálculo sencillo.

<package>
   <job id="vbs">
      <script language="VBScript">
         set WshShell = WScript.CreateObject("WScript.Shell")
         WshShell.Run "calc"
         WScript.Sleep 100
         WshShell.AppActivate "Calculadora"
         WScript.Sleep 100
         WshShell.SendKeys "1{+}"
         WScript.Sleep 500
         WshShell.SendKeys "2"
         WScript.Sleep 500
         WshShell.SendKeys "~"
         WScript.Sleep 500
         WshShell.SendKeys "*3"
         WScript.Sleep 500
         WshShell.SendKeys "~"
         WScript.Sleep 2500
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshShell = WScript.CreateObject("WScript.Shell");
         WshShell.Run("calc");
         WScript.Sleep(100);
         WshShell.AppActivate("Calculadora");
         WScript.Sleep(100);
         WshShell.SendKeys ("1{+}");
         WScript.Sleep(500);
         WshShell.SendKeys("2");
         WScript.Sleep(500);
         WshShell.SendKeys("~");
         WScript.Sleep(500);
         WshShell.SendKeys("*3");
         WScript.Sleep(500);
         WshShell.SendKeys("~");
         WScript.Sleep(2500);
      </script>
   </job>
</package>

Consulte también

Objeto WshShell | Método Run

Ayuda de Javascript y Vbscript para Javascripts.astalaweb.com.