前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C#实现的三种方式实现模拟键盘按键

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

原创
作者头像
用户7108768
修改于 2021-09-24 02:35:39
修改于 2021-09-24 02:35:39
2.1K00
代码可运行
举报
运行总次数:0
代码可运行

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

第一种方式:System.Windows.Forms.SendKeys 

                     组合键:Ctrl = ^ 、Shift = + 、Alt = %

模拟按键:A

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        private void button1_Click(object sender, EventArgs e)
        {
            textBox1.Focus();
            SendKeys.Send("{A}");
        }

模拟组合键:CTRL + A

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        private void button1_Click(object sender, EventArgs e)
        {
            webBrowser1.Focus();
            SendKeys.Send("^{A}");
        }

SendKeys.Send // 异步模拟按键(不阻塞UI)

SendKeys.SendWait // 同步模拟按键(会阻塞UI直到对方处理完消息后返回)

第二种方式:keybd_event

模拟按键:A

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        [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);
    }</pre> 模拟组合键: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);
    }</pre> 上面两种方式都是全局范围呢,现在介绍如何对单个窗口进行模拟按键 
 
 
 
 模拟按键: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);
    }</pre> 
 
 
 
 模拟组合键: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);
    }</pre> 

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
12.2 实现键盘模拟按键
本节将向读者介绍如何使用键盘鼠标操控模拟技术,键盘鼠标操控模拟技术是一种非常实用的技术,可以自动化执行一些重复性的任务,提高工作效率,在Windows系统下,通过使用各种键盘鼠标控制函数实现动态捕捉和模拟特定功能的操作。
王瑞MVP
2023/10/08
5390
12.2 实现键盘模拟按键
C#控制键盘按键(大小写按键等)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace sn设置键盘大小写 { public partial class Form1
用户8671053
2021/11/02
1.5K0
Electron中使用Node-ffi模拟键鼠操作
折腾这个东西就是要实现一个很简单的功能:在我的应用中控制处于后台的PPT进行翻页。
码客说
2020/05/09
4.6K0
模拟键盘与鼠标操作 C++
今天给大家带来,模拟键盘与鼠标操作的C++代码 都是独立的函数模块 废话不多说,直接上代码 #include "stdafx.h" #include "Shunli.h" #include "conio.h" #include <iostream> #include <sstream> #include <string> #include <algorithm> #include <vector> #include <imm.h> #include <stdio.h> #include <Wi
Shunnet
2021/06/11
1.9K0
python之模拟键盘
对于python来说,模拟键盘的方式据我了解有三种方式,其中有pyuserinput,win32api,以及winio。
sjw1998
2019/09/28
5.5K0
C#学习笔记——回车Enter使输入焦点自动跳到下一个TextBox
在录入界面中,用户往往需要按回车键时光标自动跳入下一个文本框,以方便录入操作。在C#中实现该功能有多种方法,以下是小编收集的不使用TAB键,而直接用回车键将光标转到下一个文本框的实现方法。
vv彭
2021/09/07
6.9K0
C++实现一键关闭桌面
本程序使用C语言编写,调用的Windows API,所以只能在windows上运行
芯动大师
2023/10/14
2910
C++实现一键关闭桌面
c# 调用win32模拟点击的两种方法
第一种 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace WindowsApplication2 { public parti
lpxxn
2018/01/31
1.6K0
键盘钩子之完美得到单键或多组合键的信息
【先看代码】 class KeyboardHook { #region 私有变量 private IntPtr m_pKeyboardHook = IntPtr.Zero;/// 键盘钩子句柄 private delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);/// 钩子委托声明 private HookProc m_KeyboardHookProcedu
Shunnet
2021/06/11
1.8K0
键盘钩子之完美得到单键或多组合键的信息
使用VC内嵌Python实现的一个代码检测工具
        最近组内准备整顿代码,领导让我写个简单的python脚本分析代码中注释的行数和无效注释。因为这个需求不是很急,所以我想把简单的事情做复杂点。于是就写了一个用VC内嵌Python,并通过模拟按键和发消息去控制其他软件的工具。(转载请指明出处)
方亮
2019/01/16
1.1K0
C# 进程间通讯
进程间通讯的方式有很多,常用的有共享内存(内存映射文件、共享内存DLL、剪切板等)、命名管道和匿名管道、发送消息等几种方法来直接完成,另外还可以通过socket口、配置文件和注册表等来间接实现进程间数据通讯任务。以上这几种方法各有优缺点,具体到在进程间进行大数据量数据的快速交换问题上,则可以排除使用配置文件和注册表的方法;另外,由于管道和socket套接字的使用需要有网卡的支持,因此也可以不予考虑。这样,可供选择的通讯方式只剩下共享内存和发送消息两种。
zls365
2021/01/13
1.6K0
C# 进程间通讯
wpf键盘记录器
很简单的一个wpf键盘记录器 这个程序我一样用了全局勾子,之前用的都是winform上运行了,前一段时间 在国外的论坛上逛看到了一个wpf能用的就做了一个小程序记录一下,为了方便大家直关的看我在页面上
lpxxn
2018/01/31
1.3K0
wpf键盘记录器
模拟键盘操作Windows应用程序
这是针对Windows系统录音软件的小程序 目的是把声音文件的频率转换的低一些 尝试过用WINDOWS API来做这个事,结果失败了 最后还是用程序操作EXE文件完成工作的 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.
liulun
2022/05/09
5450
借助API实现黑盒自动化测试工具的编写
  在日常编码过程中,我们常常会进行自动化测试。这里的自动化测试不是指单元测试,而是模拟人工输入来进行快速的、高并发的测试。可以使用的自动化工具有LOADRUNNER,以及目前在VS2010中的功能很强大的测试工作平台(录制操作步骤,自动生成代码)。但是,这些工具的熟练掌握也有一定的时间成本,并且,最主要的,对于一个程序员来说,那不够灵活。所以,比较高效的一个做法是,调用WINDOWS API,自己动手写编码来实现。
顾翔
2021/07/22
6550
C# WinForm 界面控件
1.首先插入新的子窗体form1,并设置IsMdiContainer = True 属性。
王瑞MVP
2022/12/28
3.3K0
C# WinForm 界面控件
C#实例——上位机helloworld
c#上位机,今天有又开始整一下。整一个简单的helloworld,参考了https://mculover666.blog.csdn.net/article/details/80650063这个文章,自己在电脑上重新做了一遍。
用户4645519
2021/12/30
1.9K0
C#实例——上位机helloworld
C# 加减乘除计算器
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_42449444/article/details/89391309 写在前面: 前段时间微软在全球最大的同性交友网站GitHub上开源了微软计算器的C++代码:https://github.com/Microsoft/calculator。我在动手做这个计算器之前和大多数人都有着一样的观点:不就是一个计算器
喜欢ctrl的cxk
2019/11/07
1.4K0
WinForm 应用程序的事件参数
在 WinForm 应用程序的事件驱动编程模型中,事件参数是事件处理方法中的重要组成部分,它包含了与事件相关的额外信息。不同类型的事件可能有不同类型的事件参数,下面将详细介绍如何处理常见的事件参数。
郑子铭
2025/03/31
800
WinForm 应用程序的事件参数
为.NET应用添加截图功能
截图的功能我们应该都经常使用,在开发软件时,我们有时也或多或少需要提供这方面的功能,无论是为用户更方便提供远程诊断,还是获取用户的选择区域,亦或是提供某些功能上的辅助。
桑榆肖物
2022/11/18
9480
为.NET应用添加截图功能
C# Producer Consumer (生产者消费者模式)demo
第一套代码将producer Consumer的逻辑写到from类里了,方便在demo的显示界面动态显示模拟生产和消费的过程。 第二套代码将producer Consumer的逻辑单独写到一个类中,使用委托的方法在from中回显生产消费的过程。 Demo中均以3个线程作为消费者,1个线程作为生产者为例。 。
zls365
2021/01/13
1.4K0
C# Producer Consumer (生产者消费者模式)demo
相关推荐
12.2 实现键盘模拟按键
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验