input-simulator

Emula teclado o ratón en .NET con Input Simulator

H.InputSimulator es una biblioteca para .NET que permite simular una entrada de teclado o ratón bajo el sistema operativo Windows.

En general, la emulación de dispositivos de entrada debe ser la última opción para la automatización. Pero, en muchas ocasiones, la automatización de la entrada es una herramienta muy útil para realizar integraciones con otros programas.

Esta librería está basada en la biblioteca https://github.com/TChatzigiannakis/InputSimulatorPlus, que a su vez es un fork de la muy conocida https://github.com/michaelnoonan/inputsimulator. Sin embargo, InputSimulator no es compatible con .NET Core, y InputSimulatorPlus está actualmente sin mantenimiento.

InputSimulator proporciona funcionalidades para la simulación de entrada, tales como simular pulsaciones de teclas, pulsaciones de teclas modificadas, o entrada de texto directo. Además, también puede simular movimiento del ratón, simulación de clicks, o desplazamiento de la rueda del mouse.

Cómo usar InputSimulator

Podemos añadir la biblioteca a un proyecto de .NET fácilmente, a través del paquete Nuget correspondiente.

Install-Package H.InputSimulator

La biblioteca proporciona la InputSimulator que dispone de los métodos para emular la entrada de teclado y mouse bajo una sintaxis “fluent”.

Por ejemplo, si queremos simular la pulsación de la tecla Enter, podemos hacerlo con el siguiente código:

using H.InputSimulator;
 
// ...
 
InputSimulator inputSimulator = new InputSimulator();
inputSimulator.Keyboard.KeyPress(VirtualKeyCode.RETURN);

Este código simulará la entrada del número de teléfono “555-555-5555” en el campo de texto, luego pulsará la tecla Tab para avanzar al siguiente campo de texto, y finalmente, escribirá “12345” en el segundo campo de texto y pulsará la tecla Enter para enviar el formulario. Conclusión

inputSimulator.Keyboard.TextEntry("mi texto");
inputSimulator.Keyboard.KeyPress(VirtualKeyCode.TAB);
inputSimulator.Keyboard.TextEntry("12345");
inputSimulator.Keyboard.KeyPress(VirtualKeyCode.RETURN);

Aquí os dejo un par de ejemplos más complejos, extraídos de la documentación de la biblioteca.

//SelfDestructMessage
new InputSimulator().Keyboard
    .ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.VK_R)
    .Sleep(1000)
    .TextEntry("notepad")
    .Sleep(1000)
    .KeyPress(VirtualKeyCode.RETURN)
    .Sleep(1000)
    .TextEntry("These are your orders if you choose to accept them...")
    .TextEntry("This message will self destruct in 5 seconds.")
    .Sleep(5000)
    .ModifiedKeyStroke(VirtualKeyCode.MENU, VirtualKeyCode.F4)
    .KeyPress(VirtualKeyCode.VK_N);
//OpenPaintAndCreateLine
new InputSimulator().Keyboard
    .ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.VK_R)
    .Sleep(1000)
    .TextEntry("mspaint")
    .Sleep(1000)
    .KeyPress(VirtualKeyCode.RETURN)
    .Sleep(1000)
    .Mouse
    .LeftButtonDown()
    .MoveMouseToPositionOnVirtualDesktop(65535 / 2, 65535 / 2)
    .LeftButtonUp();

Como vemos, es una herramienta muy útil para la automatización de la entrada de datos. Su uso es muy sencillo y puede ahorrarnos mucho tiempo y esfuerzo en la creación de aplicaciones que requieran la simulación de entrada de teclado y mouse.

H.InputSimulator es OpenSource y el código está disponible en https://github.com/HavenDV/H.InputSimulator bajo licencia Ms-PL Microsoft Public License (Ms-PL).