C#模拟键盘按键的三种方式实现
1.System.Windows.Forms.SendKeys
组合键:Ctrl = ^ 、Shift = + 、Alt = %
模拟按键:A
private void button1_Click(object sender, EventArgs e)
{
textBox1.Focus();
SendKeys.Send("{A}");
}
模拟组合键:CTRL + A
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Focus();
SendKeys.Send("^{A}");
}
SendKeys.Send // 异步模拟按键(不阻塞UI)
SendKeys.SendWait // 同步模拟按键(会阻塞UI直到对方处理完消息后返回)
//这种方式适用于WinForm程序,在Console程序以及WPF程序中不适用
2.keybd_event
DLL引用
[DllImport("user32.dll", EntryPoint = "keybd_event", SetLastError = true)]
public static extern void keybd_event(Keys bVk, byte bScan, uint dwFlags, uint dwExtraInfo);
模拟按键:A
private void button1_Click(object sender, EventArgs e)
{
textBox1.Focus();
keybd_event(Keys.A, 0, 0, 0);
}
模拟组合键:CTRL + A
public const int KEYEVENTF_KEYUP = 2;
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Focus();
keybd_event(Keys.ControlKey, 0, 0, 0);
keybd_event(Keys.A, 0, 0, 0);
keybd_event(Keys.ControlKey, 0, KEYEVENTF_KEYUP, 0);
}
3.PostMessage
上面两种方式都是全局范围呢,现在介绍如何对单个窗口进行模拟按键
模拟按键:A / 两次
[DllImport("user32.dll", EntryPoint = "PostMessageA", SetLastError = true)]
public static extern int PostMessage(IntPtr hWnd, int Msg, Keys wParam, int lParam);
public const int WM_CHAR = 256;
private void button1_Click(object sender, EventArgs e)
{
textBox1.Focus();
PostMessage(textBox1.Handle, 256, Keys.A, 2);
}
模拟组合键:CTRL + A
如下方式可能会失效,所以最好采用上述两种方式1
public const int WM_KEYDOWN = 256;
public const int WM_KEYUP = 257;
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Focus();
keybd_event(Keys.ControlKey, 0, 0, 0);
keybd_event(Keys.A, 0, 0, 0);
PostMessage(webBrowser1.Handle, WM_KEYDOWN, Keys.A, 0);
keybd_event(Keys.ControlKey, 0, KEYEVENTF_KEYUP, 0);
}
出处:https://www.cnblogs.com/soundcode/p/9467102.html
C#模拟键盘按键的三种方式实现的更多相关文章
- Android App监听软键盘按键的三种方式
前言: 我们在android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的“GO”按键加载url页面:在点击搜索框的时候,点击右下角的sea ...
- 键盘-App监听软键盘按键的三种方式
前言: 我们在android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的“GO”按键加载url页面:在点击搜索框的时候,点击右下角的sea ...
- Android App监听软键盘按键的三种方式(转)
最近有类似需求,在csdn上刚好发现,粘贴过来,以防止忘记喽 前言: 我们在android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的“G ...
- Android 监听软键盘按键的三种方式
前言: 我们在Android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的“Go”按键加载url页面:在点击搜索框的时候,点击右下角的searc ...
- Android App监听软键盘按键的三种方式与改变软键盘右下角确定键样式
actionNone : 回车键,按下后光标到下一行actionGo : Go,actionSearch : 放大镜actionSend : SendactionNext : NextactionDo ...
- Java基础知识强化之IO流笔记62:三种方式实现键盘录入
1. 三种方式实现键盘录入 System.in 标准输入流.是从键盘获取数据的 键盘录入数据三种方式: A:main方法的args接收参数. java HelloWorld hello w ...
- requests模拟登陆的三种方式
###获取登录后的页面三种方式: 一.实例化seesion,使用seesion发送post请求,在使用他获取登陆后的页面 import requests session = requests.sess ...
- Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式
Linux就这个范儿 第15章 七种武器 linux 同步IO: sync.fsync与fdatasync Linux中的内存大页面huge page/large page David Cut ...
- 盛大游戏技术总监徐峥:Unity引擎使用的三种方式
在5月13日Unite 2017 案例分享专场上,盛大游戏技术总监徐峥分享了使用Unity引擎的三种方式,以下为详细内容: 大家好,我先简单介绍一下我自己,我是盛大游戏的技术总监徐峥.我今天想分享的主 ...
随机推荐
- Java 中的代理模式及动态代理
原文:https://blog.csdn.net/briblue/article/details/73928350
- 3-D crustal model transfer to cdl format
The downloaded crustal model file, for example, its name is TW-PS-H14.nc The command is ncdump -b c ...
- springMvc 简单搭建
1.pom.xml 依赖引入 2.配置web.xml 3.配置 springMvc.xml 4.配置 logback.xml 5.编写 controller 测试 1.pom.xml 依赖引入 < ...
- normalization 阅读笔记
https://zhuanlan.zhihu.com/p/33173246 阅读笔记 1. normalization whiting - PCA 2. Internal Covariate Shif ...
- debian镜像下载地址
http://cdimage.debian.org/debian-cd/9.8.0-live/amd64/iso-hybrid/
- 部署php的正确姿势
1. 更新源 apt-get update 2.安装apache apt-get install apache2 ubuntu下apache2虚拟主机配置 cd /etc/apache2/sites- ...
- POJ 3461 Oulipo(KMP裸题)
Description The French author Georges Perec (1936–1982) once wrote a book, La disparition, without t ...
- WordPress无插件实现SMTP给评论用户发送邮件提醒
wordpress中集成PHPMalier给评论用户发送邮件提醒 首先你得去下载PHPMalier. 注:PHPMailer需PHP的socket扩展支持.如果PHPMailer连接邮箱需要ssl加 ...
- Groovy实现代码热载的机制和原理
前言: 真的很久没在博客园上更新博客了, 现在趁这段空闲的时间, 对之前接触的一些工程知识做下总结. 先来讲下借用Groovy如何来实现代码的热载, 以及其中涉及到的原理和需要注意的点. 总的来说, ...
- [LeetCode&Python] Problem 13. Roman to Integer
Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 ...