/// <summary> /// Calls the Win32 SendInput method with a stream of KeyDown and KeyUp messages in order to simulate uninterrupted text entry via the keyboard. /// </summary> /// <param name="text">The text to be simulated.</param> public IKeyboardSimulator Type(string text, bool takeCareOfCapsLock = false) { if (text.Length > UInt32.MaxValue / 2) { throw new ArgumentException(string.Format("The text parameter is too long. It must be less than {0} characters.", UInt32.MaxValue / 2), "text"); } var inputBuilder = new InputBuilder(); if (takeCareOfCapsLock) { using (var capsLockCare = new ToggleKeyCarer(VirtualKeyCode.CAPITAL, inputBuilder)) { inputBuilder = inputBuilder.AddCharacters(text); } } else { inputBuilder = inputBuilder.AddCharacters(text); } SendSimulatedInput(inputBuilder.ToArray()); return(this); }
/// <summary> /// Simulates a key press for each of the specified key codes in the order they are specified. /// </summary> /// <param name="keyCodes"></param> public IKeyboardSimulator KeyPress(params VirtualKeyCode[] keyCodes) { var builder = new InputBuilder(); KeysPress(builder, keyCodes); SendSimulatedInput(builder.ToArray()); return(this); }
/// <summary> /// Simulates a modified keystroke where there are multiple modifiers and multiple keys like CTRL-ALT-K-C where CTRL and ALT are the modifierKeys and K and C are the keys. /// The flow is Modifiers KeyDown in order, Keys Press in order, Modifiers KeyUp in reverse order. /// </summary> /// <param name="modifierKeyCodes">The list of modifier keys</param> /// <param name="keyCodes">The list of keys to simulate</param> public IKeyboardSimulator ModifiedKeyStroke(IEnumerable <VirtualKeyCode> modifierKeyCodes, IEnumerable <VirtualKeyCode> keyCodes) { var builder = new InputBuilder(); ModifiersDown(builder, modifierKeyCodes); KeysPress(builder, keyCodes); ModifiersUp(builder, modifierKeyCodes); SendSimulatedInput(builder.ToArray()); return(this); }
public IKeyboardSimulator ModifiedKeyUp(IEnumerable <VirtualKeyCode> modifierKeyCodes, IEnumerable <VirtualKeyCode> keyCodes) { var builder = new InputBuilder(); foreach (var key in keyCodes) { builder.AddKeyUp(key); } ModifiersUp(builder, modifierKeyCodes); SendSimulatedInput(builder.ToArray()); return(this); }
public KeyPressingActivation(VirtualKeyCode[] virtualKeys) { _virtualKeys = virtualKeys; ModifiersDown(_builder, _virtualKeys); _messageDispatcher.DispatchInput(_builder.ToArray()); }