C# WPF 中用代码模拟鼠标和键盘的操作
原文:C# WPF 中用代码模拟鼠标和键盘的操作

  原文地址
  C#开发者都知道,在Winform开发中,SendKeys类提供的方法是很实用的。但是可惜的是,在WPF中不能使用这个方法了。
  我们知道,在WPF中非UI线程刷新UI线程,需要使用Dispatcher.Invoke((Action)delegate { /* Your
code is put here */ });方法。这里调用System.Windows.Forms.SendKeys.Send()方法会报错。

  下面这个代码文件做了一个很好的包装,可以下载后参考:
  Simulation.zip
  
  如何使用呢?
  很简单, 要敲一个键, 比如回车:
  Keyboard.Press(Key.Enter);
  Keyboard.Release(Key.Enter);
  
  要敲一个组合键:比如Alt+F4:
  Keyboard.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);
  
  
  Simulation类的定义如下:

//定义是这样的:[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,
};

posted on 2018-08-14 11:01 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/9473325.html

C# WPF 中用代码模拟鼠标和键盘的操作相关推荐

  1. C++实现鼠标控制 封装常见的模拟鼠标、键盘的操作函数

    API 或 MFC 视窗程序 里 有 函数, 例如 API 函数 设位置: BOOL SetCursorPos( int x, int y); 参数是屏幕坐标x,y 头文件 Winuser.h 链接库 ...

  2. 控制台模拟鼠标、键盘操作

    控制台模拟鼠标.键盘操作 模拟鼠标.键盘操作,能让命令行顿然强大,想想,制作批处理版屏幕键盘等都不在话下(已制作过,效果很不错).虽然这也跟CUI无关.本教程教会你如何让命令行模拟鼠标.键盘的操作. ...

  3. java模拟器键盘输入_Java模拟鼠标和键盘输入

    用途 在电脑(Windows/Mac)上模拟鼠标和键盘输入 Mac运行需要打开相关权限,详见文末说明. 效果图 代码 import java.awt.*; import java.awt.event. ...

  4. Python - Python 模拟鼠标和键盘进行基本操作

    文章目录 Python - Python 模拟鼠标和键盘进行基本操作 相关内容:Python 实用内容 1.安装模块pyautogui 2.基本操作 Python - Python 模拟鼠标和键盘进行 ...

  5. Python 8行代码模拟鼠标自动删除微信收藏

    上回我们提到了用 pyuserinput 进行模拟键盘鼠标操作,结果发现很多同学都回复无法安装成功,即便安装成功了还是存在很多问题.确实,pyuserinput存在不少问题,包括其安装的pymouse ...

  6. Android 使用 sendevent 模拟鼠标和键盘事件

    Android 使用 sendevent 模拟鼠标和键盘事件 模拟原理是对驱动发送消息,就是linux里面的input子系统. 命令格式: sendevent /dev/input/eventX [t ...

  7. 如何控制鼠标和键盘的操作

    3.8如何控制鼠标和键盘的操作 [问题提出] 要实现远程控制,对受控方鼠标和键盘的控制必不可少. [分析比较] 要实现对鼠标和键盘的控制,必须模拟鼠标和键盘的动作.要模拟鼠标和键盘的动作有两种方法: ...

  8. js进阶 12-8 如何知道鼠标和键盘当前操作的是哪个键

    js进阶 12-8 如何知道鼠标和键盘当前操作的是哪个键 一.总结 一句话总结:event.which属性. 1.如何获取事件发生的时间? timeStamp属性 event.timeStamp 属性 ...

  9. wpf 模拟鼠标和键盘操作

    我们需要用到的mouse_event函数,位于user32.dll这个库文件里面,所以我们要先声明引用. 复制代码 [System.Runtime.InteropServices.DllImport( ...

最新文章

  1. oracle错误15260,【案例】Oracle报错ORA-00600 2663 产生的原因和解决办法
  2. C# 正则表达式小结
  3. 给共享程序集延迟签名
  4. 下载的VS2017工程编译出错的问题
  5. 力扣——字符串转换整数(atoi)
  6. spring数据源配置
  7. 22考研计算机专业课——操作系统【❤️考研复习指导❤️】
  8. HDU--2502 月之数
  9. 思维导图软件列表(mind mapping software list)
  10. 忍痛分享五款小众软件,点赞收藏加关注
  11. Science观点:不同细菌物种间极少合作—合理利用细菌间普遍存在的竞争关系来替代抗生素...
  12. SitePoint Podcast#175:版式
  13. Canvas绘制箭头
  14. 小米9等备份原机的基带相关分区镜像防止基带未知丢失ADB指令-icloudelectron修正
  15. VlC转推播放的视频到虚拟摄像头
  16. 魔鬼交易员害了法兴银行却救了全球经济?
  17. 机器学习之K近邻算法原理+应用实例
  18. omap_prcm_PM
  19. inventor2019有无CAE_autodeskinventor2019-独木成林
  20. curses-键盘编码-openssl加解密【转】

热门文章

  1. springboot多数据源动态切换和自定义mybatis分页插件
  2. UML从需求到实现---类图(2)
  3. 11.swift 单例
  4. TI CC2541 BLE协议栈蓝牙MAC 地址
  5. ProjectEuler 005题
  6. java.util.Queue用法
  7. leetcode算法题--调整数组顺序使奇数位于偶数前面
  8. leetcode算法题--链表组件
  9. C++ GUI Programming with Qt 3安装说明
  10. Machine Learning-Introduction