C# 发送消息SendKeys、SendMessage、keybd_event的用法
一、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的用法的更多相关文章
- Delphi实现获取句柄并发送消息的方法(FindWindow、FindWindowEx、EnumChildWindows、SendMessage)
Delphi实现获取句柄并发送消息的方法 本文以实例形式详细说明了Delphi获取句柄并发送消息的方法,具体用法说明如下: 查找另外一个窗口的句柄: handle := FindWindow(nil, ...
- Openfire 单人聊天和多人聊天(发送消息、接收消息)
Openfire 单人聊天和多人聊天(发送消息.接收消息) 一.单人聊天 1)发送消息: 首先要获取一个聊天窗口,getConnection()为获取连接connection的方法,调用getFrie ...
- WebSocket.之.基础入门-前端发送消息
WebSocket.之.基础入门-前端发送消息 在<WebSocket.之.基础入门-建立连接>的代码基础之上,进行添加代码.代码只改动了:TestSocket.java 和 index. ...
- openfire Android 学习(四)----单人聊天和多人聊天(发送消息、接收消息)
一.单人聊天 1)发送消息: 首先要获取一个聊天窗口,getConnection()为获取连接connection的方法,调用getFriendChat()获取 [java] view plainco ...
- 【转载】Delphi7从子线程中发送消息到主线程触发事件执行
在对数据库的操作时,有时要用一个子线程来进行后台的数据操作.比如说数据备份,转档什么的.在主窗口还能同是进行其它操作.而有时后台每处理一个数据文件,要向主窗口发送消息,让主窗口实时显示处理进度在窗口上 ...
- [转] C#中发送消息给指定的窗口,以及接收消息
原文C#中发送消息给指定的窗口,以及接收消息 public class Note { //声明 API 函数 [DllImport("User32.dll", EntryPoint ...
- keybd_event函数用法
转自不用winio,直接达到驱动级模拟键盘效果的keybd_event函数用法 键盘模拟技术是在编写游戏外挂时经常使用的技术.但是由于很多游戏采用了directinput的方式,使得发送的一般键盘消息 ...
- Netty客户端发送消息并同步获取结果
客户端发送消息并同步获取结果,其实是违背Netty的设计原则的,但是有时候不得不这么做的话,那么建议进行如下的设计: 比如我们的具体用法如下: NettyRequest request = new N ...
- 【转】python win32api win32gui win32con 简单操作教程(窗口句柄 发送消息 常用方法 键盘输入)
作者:https://blog.csdn.net/qq_16234613/article/details/79155632 附:https://www.programcreek.com/python/ ...
随机推荐
- 【Android】spannableStringBuilder
EditText: 通常用于显示文字,但有时候也需要在文字中夹杂一些图片,比如QQ中就可以使用表情图片,又比如需要的文字高亮显示等等,如何在android中也做到这样呢? 记得android中有个an ...
- eclipse发布后在tomcat下没有文件夹,服务器的Server locations不能修改
主要是因为Server locations中的deploy路径不正确,要修改这个路径,需要移除服务器中的所有项目,然后点击清空,这时再双击服务器,既可修改这个设置.
- Python编译安装遇到的问题
1.python在make时候报错 Python build finished, but the necessary bits to build these modules were not foun ...
- Python3.4+Django1.9+Bootstrap3
实现和原理 Python集成Django开发框架后,可以通过在cmd命令提示符下建立工程,工程名为learn_models 1 django-admin.py startproject learn_m ...
- HDU-1013的解题报告
题目来源:hdu-1013 题意:正整数的数字根是通过求整数的整数而求出的.如果结果值是一个位数,那么这个数字就是数字根.如果结果值包含两个或多个数字,则将这些数字相加并重复该过程.只要需要获得一个数 ...
- Java 之 JavaScript (二)
1.DOM a.作用:通过 HTML DOM,可访问 JavaScript HTML 文档的所有元素 b.功能: ①JavaScript 能够改变页面中的所有 HTML 元素 ②JavaScript ...
- POJ 1200 Crazy Search 【hash】
<题目链接> 题目大意: 给定n,nc,和一个字符串,该字符串由nc种字符组成,现在要你寻找该字符串中长度为n的子字符串有多少种. 解题分析: 因为要判重,所以讲这些字符串hash一下,将 ...
- linux(manjaro)磁盘迁移/opt /home
目录 1. 创建临时挂载点/opt, 并将分区挂载到临时挂载点上: 2. 切换单用户,将除了root用户之外的用户踢出 3. 将/opt目录下的所有内容拷贝到临时挂载点中,等待结束 4. 进入/et ...
- CSS-变量
为什么使用 css variables 借用Scrimba上的: easier to get started (no transpiling) have access to the DOM 1.loc ...
- JAVA-getComponent()与getSource()
两个方法都是获取发生事件的事件源对象,区别也许是返回的类型不同,如果是getSource()需要强制类型转换为Component 对象:而getComponent()无需转换: API的说明如下: 类 ...