生活随笔
收集整理的這篇文章主要介紹了
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 中用代码模拟鼠标和键盘的操作 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。