首先创建一个KeyBoard类,代码如下:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.InteropServices;using System.Threading;namespace KeyBoardInput{ class KeyBoard { [DllImport("user32.dll")] private static extern void keybd_event( byte bVk, byte bScan, uint dwFlags, int dwExtraInfo); private static Dictionarykeycodedic; const int KEYEVENTF_KEYUP = 0x0002; public static bool Input(string str) { #region init dic if (keycodedic == null) { keycodedic = new Dictionary (); keycodedic.Add("A", 0x41); keycodedic.Add("B", 0x42); keycodedic.Add("C", 0x43); keycodedic.Add("D", 0x44); keycodedic.Add("E", 0x45); keycodedic.Add("F", 70); keycodedic.Add("G", 0x47); keycodedic.Add("H", 0x48); keycodedic.Add("I", 0x49); keycodedic.Add("J", 0x4a); keycodedic.Add("K", 0x4b); keycodedic.Add("L", 0x4c); keycodedic.Add("M", 0x4d); keycodedic.Add("N", 0x4e); keycodedic.Add("O", 0x4f); keycodedic.Add("P", 80); keycodedic.Add("Q", 0x51); keycodedic.Add("R", 0x52); keycodedic.Add("S", 0x53); keycodedic.Add("T", 0x54); keycodedic.Add("U", 0x55); keycodedic.Add("V", 0x56); keycodedic.Add("W", 0x57); keycodedic.Add("X", 0x58); keycodedic.Add("Y", 0x59); keycodedic.Add("Z", 90); keycodedic.Add("0", 0x30); keycodedic.Add("1", 0x31); keycodedic.Add("2", 50); keycodedic.Add("3", 0x33); keycodedic.Add("4", 0x34); keycodedic.Add("5", 0x35); keycodedic.Add("6", 0x36); keycodedic.Add("7", 0x37); keycodedic.Add("8", 0x38); keycodedic.Add("9", 0x39); keycodedic.Add(".", 110); keycodedic.Add("LEFT", 0x25); keycodedic.Add("UP", 0x26); keycodedic.Add("RIGHT", 0x27); keycodedic.Add("DOWN", 40); keycodedic.Add("-", 0x6d); } #endregion foreach (char ch in str.ToUpper()) { //模拟单击键,可规避连续输入键值时遗漏或延长Thread.Sleep(50); keybd_event(0x1, 0, 1, 0); keybd_event(keycodedic[ch.ToString()], 0, 1, 0); } return false; } public static void Move(int count, string direction) { for (int i = 0; i < count; i++) { keybd_event(keycodedic[direction], 0, 0, 0); Thread.Sleep(100); } if (count == 1) { Thread.Sleep(0x3e8); } } public static void Enter() { keybd_event(0xD, 0, 0, 0); Thread.Sleep(50); keybd_event(0xD, 0, KEYEVENTF_KEYUP, 0); } public static void Shift() { keybd_event(0x10, 0, 0, 0); Thread.Sleep(50); keybd_event(0x10, 0, KEYEVENTF_KEYUP, 0); } public static void Capslock() { keybd_event(0x14, 0, 0, 0); Thread.Sleep(50); keybd_event(0x14, 0, KEYEVENTF_KEYUP, 0); } public static void CtrlV() { keybd_event(0x11, 0, 0, 0); keybd_event(0x56, 0, 0, 0); keybd_event(0x56, 0, KEYEVENTF_KEYUP, 0); keybd_event(0x11, 0, KEYEVENTF_KEYUP, 0); } public static void CtrlC() { keybd_event(0x11, 0, 0, 0); keybd_event(0x43, 0, 0, 0); keybd_event(0x43, 0, KEYEVENTF_KEYUP, 0); keybd_event(0x11, 0, KEYEVENTF_KEYUP, 0); } public static void CtrlA() { keybd_event(0x11, 0, 0, 0); keybd_event(0x41, 0, 0, 0); keybd_event(0x41, 0, KEYEVENTF_KEYUP, 0); keybd_event(0x11, 0, KEYEVENTF_KEYUP, 0); } public static void CtrlX() { keybd_event(0x11, 0, 0, 0); keybd_event(0x58, 0, 0, 0); keybd_event(0x58, 0, KEYEVENTF_KEYUP, 0); keybd_event(0x11, 0, KEYEVENTF_KEYUP, 0); } }}
模拟输入:
private void button1_Click(object sender, EventArgs e) { this.textBox1.Focus(); KeyBoard.Input("abcde"); KeyBoard.Enter(); KeyBoard.Input("123456"); KeyBoard.Enter(); }
复制粘贴剪切:
private void button2_Click(object sender, EventArgs e) { this.textBox1.Focus(); KeyBoard.CtrlV(); } private void button3_Click(object sender, EventArgs e) { this.textBox1.Focus(); KeyBoard.CtrlX(); } private void button5_Click(object sender, EventArgs e) { this.textBox1.Focus(); KeyBoard.CtrlA(); } private void button4_Click(object sender, EventArgs e) { this.textBox1.Focus(); KeyBoard.CtrlC(); }
全选,先定义事件:
//添加从键盘按ctrl+a全选事件 private void textBox1_KeyUp(object sender, KeyEventArgs e) { if (e.Modifiers == Keys.Control && e.KeyCode == Keys.A) { ((TextBox)sender).SelectAll(); this.textBox1.Focus(); } } //添加双击textbox全选事件 private void textBox1_MouseDoubleClick(object sender, MouseEventArgs e) { textBox1.Select(0, textBox1.Text.Length); }