周银辉

其实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中模拟键盘和鼠标操作相关推荐

  1. 模拟键盘、鼠标操作或Windows hook 在部分软件失效的问题

    用户界面权限隔离(UIPI) 在Windows中的权限系统 除了在进程之间提供内核对象的访问保护,窗口系统还利用完整性级别来拒绝低完整性级别的进程访问/更新高完整性级别的进程的用户界面.这个机制称为用 ...

  2. 【学习OpenCV4】在OpenCV中响应键盘与鼠标操作

    键盘与鼠标的响应 一.键盘的响应 1.1 基本知识 1.2 确定按键响应值 1.3 按键调节亮度 二.鼠标的响应 1.1 基本知识 1.2 示例程序 一.键盘的响应 1.1 基本知识   按键的读取只 ...

  3. 使用JS模拟键盘、鼠标操作

    //只在chrome测试过,大部分应用场景在webkit,所以不做其他兼容// 模拟键盘输入 window.inputValue = function (dom, st) {var evt = new ...

  4. selenium3.0模拟键盘、鼠标操作

    对于一些功能组合键,如 Fn + NmLk 来关闭或者打开数字键,或者 Alt+PrtSC 来抓取当前屏幕的活动窗口并保存到图片,通过 WebDriver 的 Keys 是没办法操作的. 这个时候我们 ...

  5. python在程序中模拟键盘鼠标操作

    Python中模拟键盘和鼠标最著名的模块是:pymouse 和 pykeyboard.一次安装两个模块比较麻烦,而有一个库整合了这两个模块,而且能支持跨平台操作,这个库叫 PyUserInput,通过 ...

  6. Selenium中级 | 在Selenium中模拟键盘操作

    以下是基于Java语言在Selenium WebDriver中模拟键盘操作的一些常用方法总结 操作单个按键 比如按回车键.按F5进行页面刷新.按F11将窗口设为全屏模式等. 方式1:使用WebElem ...

  7. Python中模拟键盘输入键位编号对照表

    以下是Python中模拟键盘常用的输入键位编号对照表: 小键盘的数字 键 键码 键 键码 键 键码 键 键码 A 65 F1 112 Backspace 8 0 96 B 66 F2 113 Tab ...

  8. python模拟按键与鼠标操作(二)将复制内容粘贴至指定文本框中

    一.简介 我们在使用python模拟键盘鼠标时,经常需要传入一些变量在页面的文本框中,比如传入查询数据的日期,查询数据的选项等等,这时我们可以利用datatime生成时间,定义为一个变量,然后利用以下 ...

  9. Hello Playwright:(7)模拟键盘和鼠标

    尽管在上一节中,我们已经能够通过FillAsync或ClickAsync来实现输入和点击元素.但是,还有其他场景,我们必须模拟用户使用键盘.鼠标与页面交互.例如在线文档: Page.Keyboard ...

最新文章

  1. 使用docker-compose进行多节点部署
  2. 原生JavaScript实现字符串长度截取
  3. 分布式锁的实现方式——ACID数据库、缓存或者是zk
  4. python在哪里写代码比较适合-程序员面试被要求手写代码,你与顶级程序员的差别在哪?...
  5. python中类方法与实例方法的区别-Python中的对象,方法,类,实例,函数用法分析...
  6. JavaScript框架
  7. shell编程中crontab用法超级详解!
  8. springMVC教程--拦截器详解
  9. 土的液塑限计算机自动图形生成,土样液塑限自动
  10. nginx编译安装与配置使用
  11. Windows MinGW配置C、C++编译环境
  12. 关于java.lang.ClassNotFoundException: org.git.mm.mysql.Driver的解决办法
  13. 台式电脑接路由器步骤_台式电脑怎么连接无线路由器
  14. 我眼中的Visual Studio 2010架“.NET研究”构工具
  15. LibreOJ 6283 数列分块入门 7(区间加区间乘区间求和)
  16. JavaScript高级编程--对象详解
  17. 速读-张量流处理器(TSP)
  18. 使用Email Receive端口上传文件至EDI系统
  19. Apowersoft Streaming Audio Recorder(录音精灵)官方中文版V4.3.5.2 | Apowersoft录音精灵官方下载
  20. 防止微机室教师机对学生机的控制

热门文章

  1. linux5.5 dev null,NULL TTY驱动程序将出现在Linux 5.2内核中
  2. chrome怎么调用硬件_浏览器发展简史——IE帝国是如何被chrome打败的?
  3. c代码格式化_Python 只用一行代码,可以实现哪些事儿?
  4. python就业班讲义_64G 最新 Python 就业班 视频教程 全集 含 pdf 源码 资料
  5. python apscheduler执行_如何使Python apscheduler在后台运行
  6. 在线制作车牌效果图_厦门车牌识别系统生产厂家直销
  7. 清除eclipse当前登录的SVN账户
  8. java 删除指定文件夹和下面所有文件_JAVA语言基础
  9. 线程停止继续_Java并发学习第二弹:如何正确停止线程?
  10. 自动拼图android github,GitHub - zero0011/Puzzle: 拼图游戏 , 可自动实现 拼图操作