一、C#中SendKeys的用法

功能:将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样。

语法: SendKeys.Send(string keys);

SendKeys.SendWait(string keys);

说明:

(1)发送字符串

SendKeys.SendWait("A"); //发送字母A

SendKeys.SendWait("ABC"); //发送字符串ABC

SendKeys.SendWait("输入汉字"); //发送输入汉字

(2)模拟发送+、^、%、~及圆括号 ( ) ,要将它放在大括号 ({}) 当中。

SendKeys.SendWait("{+}");  //发送加号

(3)模拟发送那些不显示的字符,也要将它放在大括号 ({}) 当中。

SendKeys.SendWait("{Enter}");  //发送回车

SendKeys.SendWait("{TAB}");  //发送TAB

SenKeys.SendWait("{END}"); //发送END
   SenKeys.SendWait("{F5}"); //发送F5

(4)模拟发送 SHIFT、CTRL 及 ALT 等按键结合的组合键:

按键 代码
Shift +
Ctrl ^
Alt %
      SenKeys.SendWait("^c"); //发送Ctrl+C ,必须是小写!C#区分大小写的,下同
  SendKeys.SendWait("v"); //发送Ctrl+v

SendKeys.SendWait("{A 10}");  //模拟10次按下字母A

二、C#中Keybd_event的用法

语法:

[DllImport("user32.dll",EntryPoint="keybd_event",SetLastError=true)]
 public static extern void keybd_event(byte bVk,byte bScan,int dwFlags,int dwExtraInfo);

从上述原型可以看出,Keybd_event()共有四个参数:

第一个为按键的虚拟键值,建议统一用(byte)Keys.*形式,便于记忆

例如:A (byte)Keys.A,Tab (byte)Keys.Tab
第二个参数为扫描码,一般不用设置,用0代替就行;

第三个参数为选项标志,如果为keydown则置0即可,如果为keyup则设成"KEYEVENTF_KEYUP" 或是 "0x2"或是2,建议用0按下、2弹起简单;

第四个参数一般也是置0即可。

keybd_event((byte)Keys.A,0,0,0);  //按下A
    keybd_event((byte)Keys.A,0,2,0);  //弹起A

keybd_event((byte)Keys.Enter,0,0,0);  //模拟按下回车

//模拟Ctrl+V:
     //keybd_event((byte)Keys.ControlKey,0,0,0);//按下
      //keybd_event((byte)Keys.V,0,0,0);//按下
      //keybd_event((byte)Keys.V,0,2,0);//弹起
      //keybd_event((byte)Keys.ControlKey,0,2,0);//弹起

keybd_event((byte)Keys.A,0,0,0);  //模拟按下A
   SenKeys.SendWait("{END}"); //发送END
---------------------
作者:xtfnpgy
来源:CSDN
原文:https://blog.csdn.net/xtfnpgy/article/details/40511747
版权声明:本文为博主原创文章,转载请附上博文链接!

C# 发送消息SendKeys、SendMessage、keybd_event的用法的更多相关文章

  1. Delphi实现获取句柄并发送消息的方法(FindWindow、FindWindowEx、EnumChildWindows、SendMessage)

    Delphi实现获取句柄并发送消息的方法 本文以实例形式详细说明了Delphi获取句柄并发送消息的方法,具体用法说明如下: 查找另外一个窗口的句柄: handle := FindWindow(nil, ...

  2. Openfire 单人聊天和多人聊天(发送消息、接收消息)

    Openfire 单人聊天和多人聊天(发送消息.接收消息) 一.单人聊天 1)发送消息: 首先要获取一个聊天窗口,getConnection()为获取连接connection的方法,调用getFrie ...

  3. WebSocket.之.基础入门-前端发送消息

    WebSocket.之.基础入门-前端发送消息 在<WebSocket.之.基础入门-建立连接>的代码基础之上,进行添加代码.代码只改动了:TestSocket.java 和 index. ...

  4. openfire Android 学习(四)----单人聊天和多人聊天(发送消息、接收消息)

    一.单人聊天 1)发送消息: 首先要获取一个聊天窗口,getConnection()为获取连接connection的方法,调用getFriendChat()获取 [java] view plainco ...

  5. 【转载】Delphi7从子线程中发送消息到主线程触发事件执行

    在对数据库的操作时,有时要用一个子线程来进行后台的数据操作.比如说数据备份,转档什么的.在主窗口还能同是进行其它操作.而有时后台每处理一个数据文件,要向主窗口发送消息,让主窗口实时显示处理进度在窗口上 ...

  6. [转] C#中发送消息给指定的窗口,以及接收消息

    原文C#中发送消息给指定的窗口,以及接收消息 public class Note { //声明 API 函数 [DllImport("User32.dll", EntryPoint ...

  7. keybd_event函数用法

    转自不用winio,直接达到驱动级模拟键盘效果的keybd_event函数用法 键盘模拟技术是在编写游戏外挂时经常使用的技术.但是由于很多游戏采用了directinput的方式,使得发送的一般键盘消息 ...

  8. Netty客户端发送消息并同步获取结果

    客户端发送消息并同步获取结果,其实是违背Netty的设计原则的,但是有时候不得不这么做的话,那么建议进行如下的设计: 比如我们的具体用法如下: NettyRequest request = new N ...

  9. 【转】python win32api win32gui win32con 简单操作教程(窗口句柄 发送消息 常用方法 键盘输入)

    作者:https://blog.csdn.net/qq_16234613/article/details/79155632 附:https://www.programcreek.com/python/ ...

随机推荐

  1. nginx 源码安装的重启命令

    源码安装nginx就面临这样的麻烦,不能使用service nginx restart 来重启nginx,没办法只能重新加载下nginx. #/usr/local/nginx/sbin/nginx - ...

  2. 【Android】GestureDetector类及其用法

    当用户触摸屏幕的时候,会产生许多手势,例如down,up,scroll,filing等等. 一般情况下,我们知道View类有个View.OnTouchListener内部接口,通过重写他的onTouc ...

  3. BZOJ2821 作诗(Poetize) 主席树 bitset

    原文链接https://www.lydsy.com/JudgeOnline/problem.php?id=2821 题目传送门 - BZOJ2821 题意 $n$ 个数,$m$ 组询问,每次问 $[l ...

  4. Java中常见的排序方式-选择排序(升序)

    [基本思想] 假设数组为int[] a = { 49, 38, 65, 97, 76, 13, 27 },数组元素个数为7个. 第1轮比较:先是a[0]与a[1]比较,大于则先交换,再比较a[0]和a ...

  5. netty02(接受消息以后进行返回)

    到这里接着上一篇netty01开始,没看过的可以点进去看一下再来 首先来说一下 ByteBuf   这个类吧,这个类是netty里面提供的,接受信息和返回信息格式都是它: ByteBuf   是一个抽 ...

  6. P1605 迷宫 dfs回溯法

    题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...

  7. spring_AOP_annotation

    例子下载 beans.xml 首先,在配置文件配置好下面的配置 <?xml version="1.0" encoding="UTF-8"?> < ...

  8. 表达式语言引擎:Apache Commons JEXL 2.1 发布

    http://www.linuxde.net/2011/12/4348.html Commons JEXL 2.1 发布了,该版本和 2.0.1 是二进制兼容的,但源码不兼容,因为新增了两个接口: o ...

  9. F - Tmutarakan Exams URAL - 1091 -莫比乌斯函数-容斥 or DP计数

    F - Tmutarakan Exams 题意 : 从 < = S 的 数 中 选 出 K 个 不 同 的 数 并 且 gcd > 1 .求方案数. 思路 :记 录 一 下 每 个 数 的 ...

  10. linux 学习笔记 cpio命令

    1 文件或目录打包 打包有如下多种情况 A>包含子目录打包 find /usr/lib -print /cpio -o >/uo/temp1.cpio 将/usr/lib目录下的文件与子目 ...