找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2514|回复: 16

C#模拟键盘按键的三种方式实现

 火... [复制链接]
  • 打卡等级:即来则安
  • 打卡总天数:29
  • 打卡月天数:1
  • 打卡总奖励:7791
  • 最近打卡:2025-12-13 17:25:16

2540

主题

1353

回帖

2万

积分

管理员

积分
21301
发表于 2021-5-8 19:10:06 | 显示全部楼层 |阅读模式


1.System.Windows.Forms.SendKeys
使用 SendKeys 将键击和组合键击发送到活动应用程序。此类无法实例化。若要发送一个键击给某个类并立即继续程序流,请使用 Send。若要等待键击启动的任何进程,请使用 SendWait。
每个键都由一个或多个字符表示。若要指定单个键盘字符,请使用该字符本身。例如,若要表示字母 A,请将字符串“A”传递给方法。若要表示多个字符,请将各个附加字符追加到它之前的字符的后面。若要表示字母 A、B 和 C,请将参数指定为“ABC”。
加号 (+)、插入符号 (^)、百分号 (%)、波浪号 (~) 以及圆括号 ( ) 对 SendKeys 具有特殊含义。若要指定这些字符中的某个字符,请将其放在大括号 ({}) 内。例如,若要指定加号,请使用“{+}”。若要指定大括号字符,请使用“{{}”和“{}}”。中括号 ([ ]) 对 SendKeys 没有特殊含义,
但必须将它们放在大括号内。在其他应用程序中,中括号具有特殊含义,此含义可能会在发生动态数据交换 (DDE) 时起重要作用。
模拟按键:B
private void button1_Click(object sender, EventArgs e){textBox1.Focus();SendKeys.Send("{B}");}
模拟组合键:CTRL +B
private void button1_Click(object sender, EventArgs e){textBox1.Focus();SendKeys.Send("^{B}");}
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);
模拟按键:B
private void button1_Click(object sender, EventArgs e){textBox1.Focus();keybd_event(Keys.B, 0, 0, 0);}
3.PostMessage
上面两种方式都是全局范围呢,现在介绍如何对单个窗口进行模拟按键
模拟按键:A / 两次
[DllImport("user32.dll", EntryPoint = "ostMessageA", SetLastError = true)]public static extern int PostMessage(IntPtr hWnd, int Msg, Keys wParam, int lParam);private void button1_Click(object sender, EventArgs e){textBox1.Focus()ostMessage(textBox1.Handle, 256, Keys.A, 2);}
工控课堂 www.gkket.com

0

主题

170

回帖

534

积分

中级会员

积分
534
发表于 2021-5-9 07:48:13 | 显示全部楼层
我只是路过打酱油的。
工控课堂 www.gkket.com

0

主题

102

回帖

164

积分

新手上路

积分
164
发表于 2025-11-12 09:10:49 | 显示全部楼层
哈哈哈哈笑不活,楼主这脑洞绝了!
工控课堂 www.gkket.com

0

主题

87

回帖

136

积分

新手上路

积分
136
发表于 2025-11-12 09:14:22 | 显示全部楼层
画面感太强了,仿佛身临其境!
工控课堂 www.gkket.com

0

主题

109

回帖

170

积分

新手上路

积分
170
发表于 2025-11-12 09:23:38 | 显示全部楼层
打卡路过,支持优质原创内容~
工控课堂 www.gkket.com

0

主题

52

回帖

64

积分

新手上路

积分
64
发表于 2025-11-13 10:36:46 | 显示全部楼层
赞同 + 10086,完全说出了我的想法!
工控课堂 www.gkket.com

0

主题

86

回帖

130

积分

新手上路

积分
130
发表于 2025-11-13 12:26:41 | 显示全部楼层
学到了学到了,这波分享太实用啦!
工控课堂 www.gkket.com

0

主题

251

回帖

1914

积分

高级会员

积分
1914
发表于 2025-11-13 12:39:29 | 显示全部楼层
楼主辛苦啦,期待下一篇分享
工控课堂 www.gkket.com

1

主题

115

回帖

181

积分

新手上路

积分
181
发表于 2025-11-13 13:22:17 | 显示全部楼层
原来还有这种操作,长见识了!
工控课堂 www.gkket.com

0

主题

431

回帖

2467

积分

高级会员

积分
2467
发表于 2025-11-13 13:46:36 | 显示全部楼层
这评论区卧虎藏龙,个个都是人才!
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-22 14:37 , Processed in 0.087466 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表