private List <INPUT> BuildModifiersInput(Modifiers Modifiers, bool Up, int ExtraInfo) { var keys = new List <Keys>(); if (Modifiers.CtrlPressed()) { keys.Add(Keys.ControlKey); } if (Modifiers.AltPressed()) { keys.Add(Keys.Menu); } if (Modifiers.ShiftPressed()) { keys.Add(Keys.ShiftKey); } return(keys.Select(key => { var input = new INPUT(); input.Type = InputType.KEYBOARD; input.Union.ki.dwFlags = Up ? KeyEventFlags.KEYUP : KeyEventFlags.NONE; input.Union.ki.wVk = (short)key; input.Union.ki.wScan = 0; input.Union.ki.time = 0; input.Union.ki.dwExtraInfo = new IntPtr(ExtraInfo); return input; }).ToList()); }
public override void SendKey(Keys Key, Modifiers Modifiers = Modifiers.None, bool Up = false, int ExtraInfo = 0) { var keys = new List <Keys>(); if (Modifiers.CtrlPressed()) { keys.Add(Keys.ControlKey); } if (Modifiers.AltPressed()) { keys.Add(Keys.Menu); } if (Modifiers.ShiftPressed()) { keys.Add(Keys.ShiftKey); } if (Key != Keys.None) { keys.Add(Key); } if (Up) { keys.Reverse(); } foreach (var key in keys) { SendKeyToWindow(Window.Handle, Key, Up, Recursive); } }