sendinput (user32)
Last changed: -113.208.118.82

.
Summary

The SendInput function synthesizes keystrokes, mouse motions, and button clicks to the currently active window

C# Signature:

        /// <summary>
        /// Synthesizes keystrokes, mouse motions, and button clicks.
        /// </summary>
        [DllImport("user32.dll")]
        internal static extern UINT SendInput(
        UINT nInputs,
        [MarshalAs(UnmanagedType.LPArray), In] INPUT[] pInputs,
        int cbSize);

VB.NET Signature:

Private Declare Function SendInput Lib "user32.dll" (ByVal cInputs As Integer, ByRef pInputs As INPUT, ByVal cbSize As Integer) As Integer

C# User-Defined Types:

Notes:

look over here.

Tips & Tricks:

Please add some!

User-Defined Field Types:

INPUT

Sample Code:

        var pInputs = new[]
        {
        new StructLib.INPUT()
        {
            type = EnumLib.INPUT_TYPE.INPUT_KEYBOARD,
            ki = new StructLib.KEYBDINPUT()
                {
                wScan = EnumLib.ScanCodeShort.KEY_S,
                wVk = EnumLib.VirtualKeyShort.KEY_S
                }
        },
        new StructLib.INPUT()
        {
            type = EnumLib.INPUT_TYPE.INPUT_KEYBOARD,
            ki = new StructLib.KEYBDINPUT()
                {
                wScan = EnumLib.ScanCodeShort.KEY_S,
                wVk = EnumLib.VirtualKeyShort.KEY_S,
                dwFlags = EnumLib.KEYEVENTF.KEYUP
                }
        },
        new StructLib.INPUT()
        {
            type = EnumLib.INPUT_TYPE.INPUT_KEYBOARD,
            ki = new StructLib.KEYBDINPUT()
                {
                wScan = EnumLib.ScanCodeShort.KEY_S,
                wVk = EnumLib.VirtualKeyShort.KEY_S
                }
        },
        new StructLib.INPUT()
        {
            type = EnumLib.INPUT_TYPE.INPUT_KEYBOARD,
            ki = new StructLib.KEYBDINPUT()
                {
                wScan = EnumLib.ScanCodeShort.KEY_S,
                wVk = EnumLib.VirtualKeyShort.KEY_S,
                dwFlags = EnumLib.KEYEVENTF.KEYUP
                }
        },
        new StructLib.INPUT()
        {
            type = EnumLib.INPUT_TYPE.INPUT_KEYBOARD,
            ki = new StructLib.KEYBDINPUT()
                {
                wScan = EnumLib.ScanCodeShort.KEY_S,
                wVk = EnumLib.VirtualKeyShort.KEY_S
                }
        },
        new StructLib.INPUT()
        {
            type = EnumLib.INPUT_TYPE.INPUT_KEYBOARD,
            ki = new StructLib.KEYBDINPUT()
                {
                wScan = EnumLib.ScanCodeShort.KEY_S,
                wVk = EnumLib.VirtualKeyShort.KEY_S,
                dwFlags = EnumLib.KEYEVENTF.KEYUP
                }
        }
        };
        var hWindow = Api.user32.FindWindow("notepad", null);
        Api.user32.SetForegroundWindow(hWindow);
        Thread.Sleep(2500);
        Api.user32.SendInput(
        (uint)pInputs.Length, pInputs, StructLib.INPUT.Size);

Documentation
SendInput on MSDN