H.InputSimulator

Allows you to simulate global mouse and keyboard events. Features: - Supports scan codes and multi-language input. - Supports WPF/WinForms/Console windows apps. - Supports .NET Standard, .Net Core and .Net 5/6. Supported OS: - Windows


Keywords
input, keyboard, mouse, net5, net6, netcore, netstandard, simulate, csharp, library, netstandard20
License
MS-PL
Install
Install-Package H.InputSimulator -Version 1.4.1

Documentation

H.InputSimulator

Allows you to simulate global mouse and keyboard events. Features:

  • Supports scan codes and multi-language input.
  • Supports WPF/WinForms/Console windows apps.
  • Supports .NET Standard, .Net Core and .Net 5.

Supported OS:

  • Windows

Nuget

NuGet

Install-Package H.InputSimulator

Examples

SelectCopyPaste

new InputSimulator().Keyboard
    .ModifiedKeyStroke(VirtualKeyCode.CONTROL, VirtualKeyCode.VK_A)
    .ModifiedKeyStroke(VirtualKeyCode.CONTROL, VirtualKeyCode.VK_C)
    .ModifiedKeyStroke(VirtualKeyCode.CONTROL, VirtualKeyCode.VK_V);

OpenWindowsExplorer

new InputSimulator().Keyboard
    .ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.VK_E);

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();

Common problems

Some simulated input commands were not sent successfully.

Please think of the library as a high-level wrapper over Win32 SendInput call. Unfortunately, this is a limitation of the API itself, according to this documentation:

The easiest way to get around this is to run your application as an administrator.

Support

Priority place for bugs: https://github.com/HavenDV/H.InputSimulator/issues
Priority place for ideas and general questions: https://github.com/HavenDV/H.InputSimulator/discussions
I also have a Discord support channel:
https://discord.gg/g8u2t9dKgE