Пример #1
0
 private static NativeMethods.KEY_EVENT_RECORD GetKeyPressForSimpleKey(NativeMethods.KEY_EVENT_RECORD keypress, uint uCode)
 {
     keypress.UnicodeChar      = (char)uCode;
     keypress.wVirtualKeyCode  = (ushort)uCode;
     keypress.wVirtualScanCode = (ushort)NativeMethods.MapVirtualKey(uCode, MAPVK_VK_TO_VSC);
     return(keypress);
 }
Пример #2
0
        internal static List <NativeMethods.INPUT_RECORD> MapInput(string inputElement)
        {
            List <NativeMethods.INPUT_RECORD> inputs = new List <NativeMethods.INPUT_RECORD>();

            NativeMethods.INPUT_RECORD input = new NativeMethods.INPUT_RECORD();
            input.EventType = 0x0001;

            NativeMethods.KEY_EVENT_RECORD keypress = new NativeMethods.KEY_EVENT_RECORD();
            keypress.dwControlKeyState = 0;
            keypress.wRepeatCount      = 1;

            // Just a regular character
            if (inputElement.Length == 1)
            {
                keypress.UnicodeChar = inputElement[0];
            }
            else
            {
                switch (inputElement.ToUpperInvariant())
                {
                case "BACKSPACE":
                case "BS":
                case "BKSP":
                    keypress = GetKeyPressForSimpleKey(keypress, 0x08);
                    break;

                case "BREAK":
                    keypress = GetKeyPressForSimpleKey(keypress, 0x03);
                    keypress.dwControlKeyState = (uint)NativeMethods.ControlKeyStates.LEFT_CTRL_PRESSED;
                    keypress.UnicodeChar       = (char)0;
                    break;

                case "ENTER":
                    keypress = GetKeyPressForSimpleKey(keypress, 0x0D);
                    break;

                case "ESC":
                    keypress = GetKeyPressForSimpleKey(keypress, 0x1B);
                    break;
                }
            }

            keypress.bKeyDown = true;
            input.KeyEvent    = keypress;
            inputs.Add(input);

            keypress.bKeyDown          = false;
            keypress.dwControlKeyState = 0;
            input.KeyEvent             = keypress;
            inputs.Add(input);

            return(inputs);
        }