博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模拟键盘录入,复制粘贴剪切,全选
阅读量:6905 次
发布时间:2019-06-27

本文共 5855 字,大约阅读时间需要 19 分钟。

首先创建一个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 Dictionary
keycodedic; 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);        }

 

转载于:https://www.cnblogs.com/gx-143/p/5810799.html

你可能感兴趣的文章
Java Selenium封装--RemoteWebDriver
查看>>
教程:一分钟完成SiteMesh Template模板组合
查看>>
mysql远程连接不上
查看>>
模板jinja2常用方法
查看>>
LayoutInflater源码解析
查看>>
Linux命令scp
查看>>
Java的JNDI使用
查看>>
Android-布局管理-帧布局
查看>>
基于JAVA的反射机制
查看>>
Nginx 四种分配方式——session处理
查看>>
webdav java libraay
查看>>
冒泡排序
查看>>
win8.1 cygwin编译java轻量虚拟机avian
查看>>
PHP入门
查看>>
phpexcel导入导出excel文件常用操作
查看>>
利用HttpClient 4.1 下载文件
查看>>
LNMP环境搭建-php
查看>>
Hadoop云计算的初步认识
查看>>
windows下创建控制台窗口
查看>>
JVM配置参数
查看>>