Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        /// <summary>
        /// キー入力を行います。
        /// キーストロークをシミュレートすることで入力します。
        /// </summary>
        /// <param name="virtualKeyCode">仮想キーコード。</param>
        public static void InputKey(VirtualKeyCode virtualKeyCode)
        {
            var inputs = ToInputStructure(virtualKeyCode);

            PInvokeFunctions.SendInput(2, inputs, SizeOfInputStructure);
        }
Пример #4
0
        /// <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);
        }