/// <summary> /// 同時押しのキー入力を行います。 /// 複数のキーの同時ストロークをシミュレートすることで入力します。 /// </summary> /// <param name="virtualKeyCode">仮想キーコード。</param> public static void InputKey(IReadOnlyList <VirtualKeyCode> virtualKeyCodes) { var length = virtualKeyCodes.Count; var inputs = new INPUT[length * 2]; for (int i = 0; i < length; i++) { var structures = ToInputStructure(virtualKeyCodes[i]); inputs[i] = structures[0]; inputs[i + length] = structures[1]; } PInvokeFunctions.SendInput(length * 2, inputs, SizeOfInputStructure); }
/// <summary> /// 文字列を直接入力します。 /// 現在のIMEの入力モードに依存せず、また、日本語も直接入力で入力します。 /// </summary> /// <param name="str">入力する文字列。</param> public static void InputDirectly(string str) { var length = str.Length; var inputs = new INPUT[length * 2]; for (int i = 0; i < length; i++) { var j = i * 2; var k = j + 1; inputs[j] = new INPUT(); inputs[j].type = InputType.INPUT_KEYBOARD; inputs[j].ki.wScan = str[i]; inputs[j].ki.dwFlags = KeyboardInputFlag.KEYEVENTF_UNICODE; inputs[k] = inputs[j]; inputs[k].ki.dwFlags |= KeyboardInputFlag.KEYEVENTF_KEYUP; } PInvokeFunctions.SendInput(length * 2, inputs, SizeOfInputStructure); }
/// <summary> /// キー入力を行います。 /// キーストロークをシミュレートすることで入力します。 /// </summary> /// <param name="virtualKeyCode">仮想キーコード。</param> public static void InputKey(VirtualKeyCode virtualKeyCode) { var inputs = ToInputStructure(virtualKeyCode); PInvokeFunctions.SendInput(2, inputs, SizeOfInputStructure); }
/// <summary> /// <see cref="INPUT"/>構造体のコレクションを指定して入力を行います。 /// </summary> /// <param name="inputStructures"><see cref="INPUT"/>構造体のコレクション。</param> public static void SendInput(IEnumerable <INPUT> inputStructures) { var array = inputStructures.ToArray(); PInvokeFunctions.SendInput(array.Length, array, SizeOfInputStructure); }