/// <summary> /// send an input to simulate a key being pressed down /// </summary> /// <param name="key">the key to be pressed</param> /// <returns>the input</returns> internal static Input AddKeyDown(WordsVirtualKey key) { Input i = new Input(); i.Type = (UInt32)InputType.InputKeyBoard; i.Union.keyboardInput.wVk = (UInt16) key; return i; }
/// <summary> /// send an input to simulate a being pressed up /// </summary> /// <param name="key">the key to be pressed up</param> /// <returns>the input</returns> internal static Input AddKeyUp(WordsVirtualKey key) { Input i = new Input(); i.Type = (UInt32)InputType.InputKeyBoard; i.Union.keyboardInput.wVk = (UInt16)key; i.Union.keyboardInput.Flags = (UInt16)KeyboardFlags.KEYEVENTF_KEYUP; return i; }
/// <summary> /// Simulate a key being unpressed /// </summary> /// <param name="key">the key being unpressed</param> public static void KeyUp(WordsVirtualKey key) { if (keyDownList.Count != 0 && keyDownList.Contains(key)) { keyDownList.Remove(key); Input input = InputSender.AddKeyUp(key); Input[] inputList = new Input[] { input }; InputSender.SendSimulatedInput(inputList); } }
/// <summary> /// Simulate a key being pressed /// </summary> /// <param name="key">the key being pressed</param> public static void KeyDown(WordsVirtualKey key) { if (keyDownList == null) keyDownList = new List<WordsVirtualKey>(); //if the key is not already pressed if (!keyDownList.Contains(key)) { keyDownList.Add(key); Input input = InputSender.AddKeyDown(key); Input[] inputList = new Input[] { input }; InputSender.SendSimulatedInput(inputList); } }
/// <summary> /// Simulate the left button being unpressed /// </summary> public static void LeftButtonUp() { Input input = InputSender.AddMouseButtonUp(MouseButton.LeftButton); Input[] inputList = new Input[] { input }; InputSender.SendSimulatedInput(inputList); }
/// <summary> /// Simulate an horizontal movement on a mouse wheel /// </summary> /// <param name="scrollAmountInClicks">the amount of scrolling in clicks</param> public static void HorizontalMouseWheel(int scrollAmountInClicks) { Input input = InputSender.AddMouseHorizontalWheel(scrollAmountInClicks * DELTA_WHEEL); Input[] inputList = new Input[] { input }; InputSender.SendSimulatedInput(inputList); }
/// <summary> /// Simulate the right button being pressed /// </summary> public static void RightButtonDown() { Input input = InputSender.AddMouseButtonDown(MouseButton.RightButton); Input[] inputList = new Input[] { input }; InputSender.SendSimulatedInput(inputList); }
/// <summary> /// send an input to press down a mouse button /// </summary> /// <param name="mouseButton">the mouse button to be pressed down</param> /// <returns>the input</returns> internal static Input AddMouseButtonDown(MouseButton mouseButton) { Input i = new Input(); i.Type = (UInt32)InputType.InputMouse; i.Union.mouseInput.Flags = (UInt32)mouseButton.ToMouseButtonDownFlag(); return i; }
/// <summary> /// send an input /// </summary> /// <param name="inputList">the input list to send</param> internal static void SendSimulatedInput(Input[] inputList) { uint result = NativeMethods.SendInput(Convert.ToUInt32(inputList.Length), inputList, Marshal.SizeOf(inputList[0])); if (result == 0) { LogHelper.logInput(Marshal.GetLastWin32Error().ToString(), LogHelper.logType.ERROR, "InputSender"); throw new Win32Exception(Marshal.GetLastWin32Error()); } }
/// <summary> /// send an input to simulate a verticalWheel movement /// </summary> /// <param name="clicks">the number of clicks to simulate</param> /// <returnst>the input</returns> internal static Input AddMouseVerticalWheel(int clicks) { Input i = new Input(); i.Type = (UInt32)InputType.InputMouse; i.Union.mouseInput.Flags = (UInt32)MouseFlag.VerticalWheel; i.Union.mouseInput.MouseData = clicks; return i; }
public static extern uint SendInput(uint numInputs, Input[] inputs, int size);