Beispiel #1
0
        /// <summary>
        /// Calls the Win32 SendInput method to simulate a Key UP.
        /// </summary>
        /// <param name="keyCode">The VirtualKeyCode to lift up</param>
        public static void SimulateKeyUp(VirtualKeyCode keyCode)
        {
            var up = new INPUT();

            up.Type                    = (UInt32)InputType.KEYBOARD;
            up.Data.Keyboard           = new KEYBDINPUT();
            up.Data.Keyboard.Vk        = (UInt16)keyCode;
            up.Data.Keyboard.Scan      = 0;
            up.Data.Keyboard.Flags     = (UInt32)KeyboardFlag.KEYUP;
            up.Data.Keyboard.Time      = 0;
            up.Data.Keyboard.ExtraInfo = IntPtr.Zero;

            // Check to see if this is an extended key.
            if (InputSimulator.IsExtendedKey(keyCode))
            {
                up.Data.Keyboard.Flags = up.Data.Keyboard.Flags | (UInt32)KeyboardFlag.EXTENDEDKEY;
            }

            INPUT[] inputList = new INPUT[1];
            inputList[0] = up;

            var numberOfSuccessfulSimulatedInputs = SendInput(1, inputList, Marshal.SizeOf(typeof(INPUT)));

            if (numberOfSuccessfulSimulatedInputs == 0)
            {
                throw new Exception(string.Format("The key up simulation for {0} was not successful.", keyCode));
            }
        }