生活随笔
收集整理的这篇文章主要介绍了
C# WPF 中用代码模拟鼠标和键盘的操作
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
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);[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 中用代码模拟鼠标和键盘的操作 的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔 网站内容还不错,欢迎将生活随笔 推荐给好友。