Cómo automatizar tareas repetitivas en Windows con el método SendKeys

El método SendKeys es una herramienta poderosa que se encuentra oculta dentro del modelo de objetos del Windows Script Host. Permite enviar pulsaciones de teclas a la ventana activa de la misma manera que si las hubieras escrito manualmente en el teclado. Programar el método SendKeys es relativamente fácil una vez que comprendes sus reglas y cómo utilizarlo, y puede ahorrarte horas de tiempo que solías pasar realizando tareas repetitivas.

Índice de Contenido
  1. ¿Cómo funciona el método SendKeys?
  2. Descargando el paquete Windows Script Host
  3. Sintaxis del método SendKeys
  4. Métodos complementarios
    1. El método AppActivate
    2. El método Sleep
    3. El método Run
  5. Crear macros SendKeys

¿Cómo funciona el método SendKeys?

El método SendKeys entra en escena cuando Microsoft introdujo el Windows Script Host 2.0 en 1999, e incluyeron un nuevo método en el modelo de objetos llamado SendKeys. Como su nombre lo indica, el método SendKeys está diseñado para permitirte enviar cualquier pulsación de tecla que puedas imaginar desde un script a una ventana activa, tal como si las hubieras escrito en el teclado. Si bien SendKeys está limitado al teclado, ten en cuenta que puedes utilizar el teclado para realizar manualmente muchas de las operaciones que normalmente realizas con el mouse.

El método SendKeys te proporciona una herramienta muy fácil de usar similar a una macro, y lo mejor de todo, está integrada en el sistema operativo Windows. Windows XP viene con el Windows Script Host 5.6, que, al igual que su predecesor, incluye el método SendKeys.

Descargando el paquete Windows Script Host

Windows Script Host 5.6 está integrado en Windows XP, pero si estás utilizando Windows 98/ME o Windows 2000, definitivamente querrás actualizar a la versión más reciente para aprovechar todas las últimas mejoras. Puedes descargar el paquete Windows Script Host 5.6 desde la sección de Windows Script de la biblioteca MSDN de Microsoft. Solo sigue el enlace a la sección de descarga de Windows Script 5.6 (Ten en cuenta que hay dos versiones del paquete, una para Windows 2000 y otra para Windows 98/ME y Windows NT 4.0). Mientras estés allí, asegúrate de descargar también la documentación de Windows Script Host 5.6. Es un archivo de instalación ejecutable que instalará un archivo de ayuda compilado.

Sintaxis del método SendKeys

Antes de poder comenzar a utilizar el método SendKeys para crear macros, debes comprender su sintaxis. Afortunadamente, la sintaxis del método SendKeys es muy sencilla:

WshShell.SendKeys "cadena"

Cómo utilizar Cacls.exe para asignar

En este caso, WshShell es la variable estándar de objeto Shell del Windows Script Host que debes instanciar al principio de cada script, y cadena es la pulsación de tecla que deseas enviar a la aplicación.

Enviar cualquier caracter estándar del teclado es simplemente una cuestión de encerrar los caracteres entre comillas como una cadena. Por ejemplo, si quisieras enviar el carácter z, utilizarías el formato:

WshShell.SendKeys "z"

De manera similar, si quisieras enviar una frase, utilizarías el formato:

WshShell.SendKeys "¡Hola Mundo!"

En la mayoría de los casos, utilizarás el método SendKeys para generar pulsaciones de teclas compuestas que utilicen las teclas especiales [Ctrl], [Alt] y [Shift]. Para representar estas teclas especiales, el método SendKeys utiliza los caracteres que se muestran en la Tabla A.

Domina el arte: Administra comparticiones de red en Windows NT con ShareUI
Tabla A
Cómo automatizar tareas repetitivas en Windows con el método SendKeys - Microsoft | Imagen 1 Newsmatic
Caracteres para representar teclas especiales

Por ejemplo, si quisieras enviar el comando [Ctrl] + [S] a una aplicación para guardar el archivo actual, utilizarías el formato:

WshShell.SendKeys "^s"

Además de los caracteres estándar y las teclas especiales, hay una serie de otras teclas que querrás utilizar, como [Enter] o las teclas de función. Para enviar este tipo de teclas, utilizarás un conjunto de códigos que luego encerrarás entre corchetes. Estos códigos se muestran en la Tabla B.

Tabla B
Cómo automatizar tareas repetitivas en Windows con el método SendKeys - Microsoft | Imagen 2 Newsmatic
Códigos que representan teclas especiales

Métodos complementarios

Aunque el método SendKeys es una herramienta poderosa, no puede proporcionar todas las características que necesitas para ejecutar macros. Afortunadamente, Windows Script Host te ofrece varios métodos complementarios poderosos que cubren esas limitaciones.

El método AppActivate

Para asegurarte de que la ventana deseada reciba las pulsaciones de teclas, utilizarás el método AppActivate. Como su nombre indica, el método AppActivate está diseñado para cambiar el enfoque a una aplicación específica o a cualquier ventana abierta (incluyendo cuadros de diálogo) que especifiques. Para hacer su trabajo, el método AppActivate utiliza la sintaxis:

WshShell.AppActivate título

Cómo solucionar errores de protección en Windows 98 y XP

Aquí, título sería una cadena que contiene el nombre que aparece en la barra de título de la aplicación o cuadro de diálogo al que deseas llevar el enfoque. Puedes utilizar una parte o todo el título.

Si la ventana está en segundo plano, el método AppActivate la llevará al primer plano para que puedas ver lo que sucede. Sin embargo, si la ventana está minimizada, el método AppActivate la dejará donde está pero aún cambiará el enfoque a esa ventana.

Hay un par de problemas que debes tener en cuenta al utilizar el método AppActivate. Si una aplicación tiene varias ventanas abiertas y todas contienen el mismo título, el método AppActivate tomará la primera ventana que encuentre. Si la aplicación no se está ejecutando o no existe una ventana con el título que has especificado, el método AppActivate tomará cualquier ventana que contenga una palabra del título o simplemente se quedará en segundo plano hasta que el script finalice. Por lo tanto, es importante que seas muy detallado al especificar un título con el método AppActivate.

El método Sleep

El método Sleep está diseñado para suspender temporalmente la ejecución del script durante un período de tiempo específico. Utilizarás el método Sleep entre seleccionar una ventana con el método AppActivate y automatizarla con el método SendKeys. Esto asegurará que el método AppActivate haya capturado la ventana antes de que el método SendKeys comience a enviar pulsaciones de teclas.

El método Sleep utiliza la sintaxis:

WshShell.Sleep tiempo

La importancia del scripting en la administración de redes

Aquí, tiempo es un valor entero que representa milisegundos. Por ejemplo, un valor de 1000 equivale a un segundo, que es un período de tiempo bastante largo para que un script se detenga al crear una macro SendKeys. En general, utilizar un valor en el rango de 100 a 500 es suficiente.

El método Run

Si deseas automatizar una aplicación mediante una macro SendKeys que actualmente no se está ejecutando, puedes utilizar el método Run para lanzar la aplicación.

El método Run utiliza la sintaxis:

WshShell.Run(ejecutable, [EstiloVentana], [Esperar])

Aquí, ejecutable es la ruta y el nombre del archivo ejecutable de la aplicación. Los parámetros EstiloVentana y Esperar son opcionales y te permiten controlar el tamaño y la ubicación de la ventana, y si el script debe pausar hasta que se cierre la aplicación, respectivamente. En la mayoría de los casos, simplemente utilizar el parámetro ejecutable es suficiente.

Crear macros SendKeys

Una vez que hayas decidido una tarea que deseas automatizar utilizando una macro SendKeys, debes realizar manualmente la tarea utilizando el teclado para anotar cada pulsación de tecla que utilices y cualquier título de ventana o cuadro de diálogo que encuentres durante la realización de la tarea.

WinHex: una herramienta poderosa para edición

Por ejemplo, supongamos que deseas automatizar el procedimiento para borrar la lista de documentos recientes de Windows XP. Como sabes, el botón Borrar lista está oculto en el cuadro de diálogo Propiedades de la barra de tareas y del menú Inicio. Automatizar este procedimiento utilizando una macro SendKeys te ahorraría mucho tiempo.

Si mapeas las pulsaciones de teclas necesarias para llegar al botón Borrar lista y llevar a cabo la tarea, obtendrás una lista como la que se muestra en la Tabla C.

Tabla C
Cómo automatizar tareas repetitivas en Windows con el método SendKeys - Microsoft | Imagen 3 Newsmatic
Pulsaciones de teclas para borrar la lista de documentos recientes

Utilizando esta información, puedes crear el script mostrado en el Anexo A.

Consejo final: evita los problemas con cambios de enfoque

Una de las mayores quejas que he escuchado sobre el uso del método SendKeys para macros es que si el enfoque de la ventana cambia durante la ejecución del script, las pulsaciones de teclas se enviarán a cualquier ventana que reciba el enfoque. Ahora, el peligro de esto es que las pulsaciones de teclas destinadas a una ventana puedan tener efectos desastrosos (como la pérdida de datos) cuando se aplican a otra ventana.

Puedes evitar esto utilizando el comando AppActivate antes de cada comando SendKeys, lo que asegurará que la ventana correcta reciba las pulsaciones de teclas. Para implementar esta solución, puedes crear una subrutina que contenga los comandos AppActivate, Sleep y SendKeys, y luego utilizar una serie de declaraciones Call para enviar a la subrutina la pulsación de tecla a realizar y el título de la ventana.

Cómo encontrar la clave de producto de Windows XP con ViewKeyXP

Por ejemplo, si aplicaras esta técnica de subrutina al script que mencioné anteriormente para borrar la lista de documentos recientes de Windows XP, el script se vería como el que se muestra en el Anexo B.

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Microsoft, allí encontraras muchos artículos similares a Cómo automatizar tareas repetitivas en Windows con el método SendKeys , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.