C# WPF 中用代码模拟鼠标和键盘的操作
来源:互联网 发布:大学生网络危害的案例 编辑:程序博客网 时间:2024/05/02 04:43
原文地址
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,};
0 0
- C# WPF 中用代码模拟鼠标和键盘的操作
- c#模拟鼠标键盘操作
- c#模拟鼠标键盘操作
- c#模拟鼠标键盘操作
- c#模拟鼠标键盘操作
- c#模拟鼠标键盘操作
- C# 模拟 鼠标 键盘操作
- C#/模拟键盘和鼠标的操作
- C# 模拟键盘 和 鼠标
- 用C#程序实现键盘和鼠标的模拟
- 用C#程序实现键盘和鼠标的模拟
- C# webbrowser文本框的键盘和鼠标模拟输入和模拟鼠标点击
- C# 键盘鼠标模拟
- C#模拟鼠标,键盘
- C#模拟鼠标,键盘 .
- .net中模拟键盘和鼠标操作
- .net中模拟键盘和鼠标操作
- .net中模拟键盘和鼠标操作
- 比赛1
- 常见加载类错误分析ClassNotFoundException和NoClassDefFoundError
- Lua 入门学习
- OS开发网络篇—HTTP协议i
- sqlserver The system cannot find the file specified
- C# WPF 中用代码模拟鼠标和键盘的操作
- android错误:Installation error: INSTALL_FAILED_VERSION_DOWNGRADE
- zoj3905 贪心dp
- Oracle Clusterware (CRS or GI) Rolling Upgrades (文档 ID 338706.1)
- 转----java复习一 ——java web项目启动加载顺序
- hibernate5.x 版本中创建SessionFactory的思路与方法
- MySQL information_schema 数据库
- Linux学习记录(17)SSH协议及Linux日志基础
- MacBook 最近发现的一些问题和技巧