打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

模拟按键在.Net中有三种方式实现。

第一种方式: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直到对方处理完消息后返回)

第二种方式:keybd_event

模拟按键:A


        [DllImport("user32.dll", EntryPoint = "keybd_event", SetLastError = true)]        public static extern void keybd_event(Keys bVk, byte bScan, uint dwFlags, uint dwExtraInfo);        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);        }

上面两种方式都是全局范围呢,现在介绍如何对单个窗口进行模拟按键


模拟按键: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

       如下方式可能会失效,所以最好采用上述两种方式


        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);
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C#模拟键盘鼠标事件 - 护马 - 博客园
VB SendKeys用法(模拟按键)
C# 简单的操作其他程序
远程控制之鼠标、按键模拟
模拟键盘输入
一个窗体作为另一个窗体的容器
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服