.net中模拟键盘和鼠标操作
周银辉
其实SendKeys类提供的方法蛮好用的,可惜的是WPF中不能用了,说是WPF的消息循环方式改成了Dispatcher,所以直接调用System.Windows.Forms.SendKeys.Send()方法会报错. 不过没关系, 至少有use32的SendInput可用,通过P/Invoke方式,我们可以模拟键盘或鼠标操作.
定义是这样的:
[DllImport("user32.dll", SetLastError = true)] internal static extern int SendInput(int nInputs, ref INPUT mi, int cbSize);
其中的INPUT结构表示一个键盘或鼠标操作:
[StructLayout(LayoutKind.Sequential)] internal struct INPUT { internal int type; internal INPUTUNION union; }; [StructLayout(LayoutKind.Explicit)] internal struct INPUTUNION { [FieldOffset(0)] internal MOUSEINPUT mouseInput; [FieldOffset(0)] internal KEYBDINPUT keyboardInput; }; [StructLayout(LayoutKind.Sequential)] internal struct MOUSEINPUT { internal int dx; internal int dy; internal int mouseData; internal int dwFlags; internal int time; internal IntPtr dwExtraInfo; }; [StructLayout(LayoutKind.Sequential)] internal struct KEYBDINPUT { internal short wVk; internal short wScan; internal int dwFlags; internal int time; internal IntPtr dwExtraInfo; }; [Flags] internal enum SendMouseInputFlags { Move = 0x0001, LeftDown = 0x0002, LeftUp = 0x0004, RightDown = 0x0008, RightUp = 0x0010, MiddleDown = 0x0020, MiddleUp = 0x0040, XDown = 0x0080, XUp = 0x0100, Wheel = 0x0800, Absolute = 0x8000, };
关于这些方法或结构的定义在http://www.pinvoke.net/index.aspx 这个网站上可以查找得到(但不保证百分百靠谱)
下面这个代码文件做了一个很好的包装,可以下载后参考:
Simulation.zip
Keyboard.Press(Key.Enter); Keyboard.Release(Key.Enter);
要敲一个组合键:比如Alt+F4Keyboard.Press(Key.LeftAlt); Keyboard.Press(Key.F4); Keyboard.Release(Key.LeftAlt); Keyboard.Release(Key.F4);
要敲一段文字:Keyboard.Type("notepad");
鼠标与之类似,比如:Mouse.MoveTo(new System.Drawing.Point(x, y)); Mouse.Click(MouseButton.Right);
.net中模拟键盘和鼠标操作相关推荐
- 模拟键盘、鼠标操作或Windows hook 在部分软件失效的问题
用户界面权限隔离(UIPI) 在Windows中的权限系统 除了在进程之间提供内核对象的访问保护,窗口系统还利用完整性级别来拒绝低完整性级别的进程访问/更新高完整性级别的进程的用户界面.这个机制称为用 ...
- 【学习OpenCV4】在OpenCV中响应键盘与鼠标操作
键盘与鼠标的响应 一.键盘的响应 1.1 基本知识 1.2 确定按键响应值 1.3 按键调节亮度 二.鼠标的响应 1.1 基本知识 1.2 示例程序 一.键盘的响应 1.1 基本知识 按键的读取只 ...
- 使用JS模拟键盘、鼠标操作
//只在chrome测试过,大部分应用场景在webkit,所以不做其他兼容// 模拟键盘输入 window.inputValue = function (dom, st) {var evt = new ...
- selenium3.0模拟键盘、鼠标操作
对于一些功能组合键,如 Fn + NmLk 来关闭或者打开数字键,或者 Alt+PrtSC 来抓取当前屏幕的活动窗口并保存到图片,通过 WebDriver 的 Keys 是没办法操作的. 这个时候我们 ...
- python在程序中模拟键盘鼠标操作
Python中模拟键盘和鼠标最著名的模块是:pymouse 和 pykeyboard.一次安装两个模块比较麻烦,而有一个库整合了这两个模块,而且能支持跨平台操作,这个库叫 PyUserInput,通过 ...
- Selenium中级 | 在Selenium中模拟键盘操作
以下是基于Java语言在Selenium WebDriver中模拟键盘操作的一些常用方法总结 操作单个按键 比如按回车键.按F5进行页面刷新.按F11将窗口设为全屏模式等. 方式1:使用WebElem ...
- Python中模拟键盘输入键位编号对照表
以下是Python中模拟键盘常用的输入键位编号对照表: 小键盘的数字 键 键码 键 键码 键 键码 键 键码 A 65 F1 112 Backspace 8 0 96 B 66 F2 113 Tab ...
- python模拟按键与鼠标操作(二)将复制内容粘贴至指定文本框中
一.简介 我们在使用python模拟键盘鼠标时,经常需要传入一些变量在页面的文本框中,比如传入查询数据的日期,查询数据的选项等等,这时我们可以利用datatime生成时间,定义为一个变量,然后利用以下 ...
- Hello Playwright:(7)模拟键盘和鼠标
尽管在上一节中,我们已经能够通过FillAsync或ClickAsync来实现输入和点击元素.但是,还有其他场景,我们必须模拟用户使用键盘.鼠标与页面交互.例如在线文档: Page.Keyboard ...
最新文章
- 使用docker-compose进行多节点部署
- 原生JavaScript实现字符串长度截取
- 分布式锁的实现方式——ACID数据库、缓存或者是zk
- python在哪里写代码比较适合-程序员面试被要求手写代码,你与顶级程序员的差别在哪?...
- python中类方法与实例方法的区别-Python中的对象,方法,类,实例,函数用法分析...
- JavaScript框架
- shell编程中crontab用法超级详解!
- springMVC教程--拦截器详解
- 土的液塑限计算机自动图形生成,土样液塑限自动
- nginx编译安装与配置使用
- Windows MinGW配置C、C++编译环境
- 关于java.lang.ClassNotFoundException: org.git.mm.mysql.Driver的解决办法
- 台式电脑接路由器步骤_台式电脑怎么连接无线路由器
- 我眼中的Visual Studio 2010架“.NET研究”构工具
- LibreOJ 6283 数列分块入门 7(区间加区间乘区间求和)
- JavaScript高级编程--对象详解
- 速读-张量流处理器(TSP)
- 使用Email Receive端口上传文件至EDI系统
- Apowersoft Streaming Audio Recorder(录音精灵)官方中文版V4.3.5.2 | Apowersoft录音精灵官方下载
- 防止微机室教师机对学生机的控制
热门文章
- linux5.5 dev null,NULL TTY驱动程序将出现在Linux 5.2内核中
- chrome怎么调用硬件_浏览器发展简史——IE帝国是如何被chrome打败的?
- c代码格式化_Python 只用一行代码,可以实现哪些事儿?
- python就业班讲义_64G 最新 Python 就业班 视频教程 全集 含 pdf 源码 资料
- python apscheduler执行_如何使Python apscheduler在后台运行
- 在线制作车牌效果图_厦门车牌识别系统生产厂家直销
- 清除eclipse当前登录的SVN账户
- java 删除指定文件夹和下面所有文件_JAVA语言基础
- 线程停止继续_Java并发学习第二弹:如何正确停止线程?
- 自动拼图android github,GitHub - zero0011/Puzzle: 拼图游戏 , 可自动实现 拼图操作