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,
};
转载于:https://www.cnblogs.com/lonelyxmas/p/9473325.html
C# WPF 中用代码模拟鼠标和键盘的操作相关推荐
- C++实现鼠标控制 封装常见的模拟鼠标、键盘的操作函数
API 或 MFC 视窗程序 里 有 函数, 例如 API 函数 设位置: BOOL SetCursorPos( int x, int y); 参数是屏幕坐标x,y 头文件 Winuser.h 链接库 ...
- 控制台模拟鼠标、键盘操作
控制台模拟鼠标.键盘操作 模拟鼠标.键盘操作,能让命令行顿然强大,想想,制作批处理版屏幕键盘等都不在话下(已制作过,效果很不错).虽然这也跟CUI无关.本教程教会你如何让命令行模拟鼠标.键盘的操作. ...
- java模拟器键盘输入_Java模拟鼠标和键盘输入
用途 在电脑(Windows/Mac)上模拟鼠标和键盘输入 Mac运行需要打开相关权限,详见文末说明. 效果图 代码 import java.awt.*; import java.awt.event. ...
- Python - Python 模拟鼠标和键盘进行基本操作
文章目录 Python - Python 模拟鼠标和键盘进行基本操作 相关内容:Python 实用内容 1.安装模块pyautogui 2.基本操作 Python - Python 模拟鼠标和键盘进行 ...
- Python 8行代码模拟鼠标自动删除微信收藏
上回我们提到了用 pyuserinput 进行模拟键盘鼠标操作,结果发现很多同学都回复无法安装成功,即便安装成功了还是存在很多问题.确实,pyuserinput存在不少问题,包括其安装的pymouse ...
- Android 使用 sendevent 模拟鼠标和键盘事件
Android 使用 sendevent 模拟鼠标和键盘事件 模拟原理是对驱动发送消息,就是linux里面的input子系统. 命令格式: sendevent /dev/input/eventX [t ...
- 如何控制鼠标和键盘的操作
3.8如何控制鼠标和键盘的操作 [问题提出] 要实现远程控制,对受控方鼠标和键盘的控制必不可少. [分析比较] 要实现对鼠标和键盘的控制,必须模拟鼠标和键盘的动作.要模拟鼠标和键盘的动作有两种方法: ...
- js进阶 12-8 如何知道鼠标和键盘当前操作的是哪个键
js进阶 12-8 如何知道鼠标和键盘当前操作的是哪个键 一.总结 一句话总结:event.which属性. 1.如何获取事件发生的时间? timeStamp属性 event.timeStamp 属性 ...
- wpf 模拟鼠标和键盘操作
我们需要用到的mouse_event函数,位于user32.dll这个库文件里面,所以我们要先声明引用. 复制代码 [System.Runtime.InteropServices.DllImport( ...
最新文章
- oracle错误15260,【案例】Oracle报错ORA-00600 2663 产生的原因和解决办法
- C# 正则表达式小结
- 给共享程序集延迟签名
- 下载的VS2017工程编译出错的问题
- 力扣——字符串转换整数(atoi)
- spring数据源配置
- 22考研计算机专业课——操作系统【❤️考研复习指导❤️】
- HDU--2502 月之数
- 思维导图软件列表(mind mapping software list)
- 忍痛分享五款小众软件,点赞收藏加关注
- Science观点:不同细菌物种间极少合作—合理利用细菌间普遍存在的竞争关系来替代抗生素...
- SitePoint Podcast#175:版式
- Canvas绘制箭头
- 小米9等备份原机的基带相关分区镜像防止基带未知丢失ADB指令-icloudelectron修正
- VlC转推播放的视频到虚拟摄像头
- 魔鬼交易员害了法兴银行却救了全球经济?
- 机器学习之K近邻算法原理+应用实例
- omap_prcm_PM
- inventor2019有无CAE_autodeskinventor2019-独木成林
- curses-键盘编码-openssl加解密【转】