protected internal override void Send(string keys) { if(keys.Length == 0) return; var len = keys.Length * 2; var inputs = new WindowsAPI.INPUT[len]; for(int i = 0; i < keys.Length; i++) { uint flag = WindowsAPI.KEYEVENTF_UNICODE; if((keys[i] & 0xff00) == 0xe000) flag |= WindowsAPI.KEYEVENTF_EXTENDEDKEY; var down = new WindowsAPI.INPUT { type = WindowsAPI.INPUT_KEYBOARD }; down.i.k = new WindowsAPI.KEYBDINPUT { wScan = keys[i], dwFlags = flag }; var up = new WindowsAPI.INPUT { type = WindowsAPI.INPUT_KEYBOARD }; up.i.k = new WindowsAPI.KEYBDINPUT { wScan = keys[i], dwFlags = flag | WindowsAPI.KEYEVENTF_KEYUP }; int x = i * 2; inputs[x] = down; inputs[x + 1] = up; } ignore = true; WindowsAPI.SendInput((uint)len, inputs, Marshal.SizeOf(typeof(WindowsAPI.INPUT))); ignore = false; }
protected override void Backspace(int length) { length *= 2; var inputs = new WindowsAPI.INPUT[length]; for (int i = 0; i < length; i += 2) { var down = new WindowsAPI.INPUT { type = WindowsAPI.INPUT_KEYBOARD }; down.i.k = new WindowsAPI.KEYBDINPUT { wVk = VK_BACK }; var up = new WindowsAPI.INPUT { type = WindowsAPI.INPUT_KEYBOARD }; up.i.k = new WindowsAPI.KEYBDINPUT { wVk = VK_BACK, dwFlags = WindowsAPI.KEYEVENTF_KEYUP }; inputs[i] = down; inputs[i + 1] = up; } ignore = true; WindowsAPI.SendInput((uint)length, inputs, Marshal.SizeOf(typeof(WindowsAPI.INPUT))); ignore = false; }
protected internal override void Send(string keys) { if (keys.Length == 0) { return; } var len = keys.Length * 2; var inputs = new WindowsAPI.INPUT[len]; for (int i = 0; i < keys.Length; i++) { uint flag = WindowsAPI.KEYEVENTF_UNICODE; if ((keys[i] & 0xff00) == 0xe000) { flag |= WindowsAPI.KEYEVENTF_EXTENDEDKEY; } var down = new WindowsAPI.INPUT { type = WindowsAPI.INPUT_KEYBOARD }; down.i.k = new WindowsAPI.KEYBDINPUT { wScan = keys[i], dwFlags = flag }; var up = new WindowsAPI.INPUT { type = WindowsAPI.INPUT_KEYBOARD }; up.i.k = new WindowsAPI.KEYBDINPUT { wScan = keys[i], dwFlags = flag | WindowsAPI.KEYEVENTF_KEYUP }; int x = i * 2; inputs[x] = down; inputs[x + 1] = up; } ignore = true; WindowsAPI.SendInput((uint)len, inputs, Marshal.SizeOf(typeof(WindowsAPI.INPUT))); ignore = false; }
protected internal override void Send(Keys key) { key &= ~Keys.Modifiers; if (key == Keys.None) { return; } uint flag = WindowsAPI.KEYEVENTF_UNICODE; var vk = (ushort)key; if ((vk & 0xff00) == 0xe000) { flag |= WindowsAPI.KEYEVENTF_EXTENDEDKEY; } var down = new WindowsAPI.INPUT { type = WindowsAPI.INPUT_KEYBOARD }; down.i.k = new WindowsAPI.KEYBDINPUT { wVk = vk, dwFlags = flag }; var up = new WindowsAPI.INPUT { type = WindowsAPI.INPUT_KEYBOARD }; up.i.k = new WindowsAPI.KEYBDINPUT { wVk = vk, dwFlags = flag | WindowsAPI.KEYEVENTF_KEYUP }; var inputs = new[] { down, up }; ignore = true; WindowsAPI.SendInput((uint)inputs.Length, inputs, Marshal.SizeOf(typeof(WindowsAPI.INPUT))); ignore = false; }
protected internal override void Send(Keys key) { key &= ~Keys.Modifiers; if(key == Keys.None) return; uint flag = WindowsAPI.KEYEVENTF_UNICODE; var vk = (ushort)key; if((vk & 0xff00) == 0xe000) flag |= WindowsAPI.KEYEVENTF_EXTENDEDKEY; var down = new WindowsAPI.INPUT { type = WindowsAPI.INPUT_KEYBOARD }; down.i.k = new WindowsAPI.KEYBDINPUT { wVk = vk, dwFlags = flag }; var up = new WindowsAPI.INPUT { type = WindowsAPI.INPUT_KEYBOARD }; up.i.k = new WindowsAPI.KEYBDINPUT { wVk = vk, dwFlags = flag | WindowsAPI.KEYEVENTF_KEYUP }; var inputs = new[] { down, up }; ignore = true; WindowsAPI.SendInput((uint)inputs.Length, inputs, Marshal.SizeOf(typeof(WindowsAPI.INPUT))); ignore = false; }
protected override void Backspace(int length) { length *= 2; var inputs = new WindowsAPI.INPUT[length]; for (int i = 0; i < length; i += 2) { var down = new WindowsAPI.INPUT { type = WindowsAPI.INPUT_KEYBOARD }; down.i.k = new WindowsAPI.KEYBDINPUT { wVk = VK_BACK }; var up = new WindowsAPI.INPUT { type = WindowsAPI.INPUT_KEYBOARD }; up.i.k = new WindowsAPI.KEYBDINPUT { wVk = VK_BACK, dwFlags = WindowsAPI.KEYEVENTF_KEYUP }; inputs[i] = down; inputs[i + 1] = up; } ignore = true; WindowsAPI.SendInput((uint) length, inputs, Marshal.SizeOf(typeof(WindowsAPI.INPUT))); ignore = false; }