/// <summary>
        /// Adds a key up to the list of <see cref="INPUT"/> messages.
        /// </summary>
        /// <param name="keyCode">The <see cref="VirtualKeyCode"/>.</param>
        /// <returns>This <see cref="InputBuilder"/> instance.</returns>
        public InputBuilder AddKeyUp(VirtualKeyCode keyCode)
        {
            KeyboardFlag flags    = KeyboardFlag.KeyUp;
            ushort       scanCode = (UInt16)(NativeMethods.MapVirtualKey((UInt32)keyCode, 0) & 0xFFU);

            if (keyCode == VirtualKeyCode.LSHIFT)
            {
                flags   |= KeyboardFlag.ScanCode;
                scanCode = 0x2A;
            }

            var up =
                new INPUT
            {
                Type = (UInt32)InputType.Keyboard,
                Data =
                {
                    Keyboard      =
                        new KEYBDINPUT
                    {
                        KeyCode = (UInt16)keyCode,
                        Scan    = scanCode,
                        Flags   = (UInt32)(IsExtendedKey(keyCode)
                                                                  ? flags | KeyboardFlag.ExtendedKey
                                                                  : flags),
                        Time      =               0,
                        ExtraInfo = IntPtr.Zero
                    }
                }
            };

            _inputList.Add(up);
            return(this);
        }
示例#2
0
        private static INPUT CreateKeyboardInput(Keys key, KeyboardFlag flags)
        {
            if (IsExtendedKey(key))
            {
                flags |= KeyboardFlag.ExtendedKey;
            }

            return(new INPUT
            {
                Type = (uint)InputType.Keyboard,
                Data = new InputUnion
                {
                    KeyboardInput = new KEYBDINPUT
                    {
                        KeyCode = 0,
                        Scan = GetScanCode(key),
                        Flags = (UInt32)flags,
                        Time = 0,
                        ExtraInfo = IntPtr.Zero
                    }
                }
            });
        }
示例#3
0
 public static extern void KeybdEvent(byte bVk, byte bScan, KeyboardFlag dwFlags, UIntPtr dwExtraInfo);