.NET ez 2012-06-04
.Net 已經內建控制滑鼠位置的指令:
Cursor.Position = new Point(30, 60); //X Y軸位置
如果要點擊滑鼠就需要透過WinAPI才能達到:
首先建立一個Class:
using System.Threading; using System.Runtime.InteropServices; using System; namespace Test { static public class Mouse { [DllImport("user32.dll", SetLastError = true)] public static extern Int32 SendInput(Int32 cInputs, ref INPUT pInputs, Int32 cbSize); [StructLayout(LayoutKind.Explicit, Pack = 1, Size = 28)] public struct INPUT { [FieldOffset(0)] public INPUTTYPE dwType; [FieldOffset(4)] public MOUSEINPUT mi; [FieldOffset(4)] public KEYBOARDINPUT ki; [FieldOffset(4)] public HARDWAREINPUT hi; } [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct MOUSEINPUT { public Int32 dx; public Int32 dy; public Int32 mouseData; public MOUSEFLAG dwFlags; public Int32 time; public IntPtr dwExtraInfo; } [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct KEYBOARDINPUT { public Int16 wVk; public Int16 wScan; public KEYBOARDFLAG dwFlags; public Int32 time; public IntPtr dwExtraInfo; } [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct HARDWAREINPUT { public Int32 uMsg; public Int16 wParamL; public Int16 wParamH; } public enum INPUTTYPE : int { Mouse = 0, Keyboard = 1, Hardware = 2 } [Flags()] public enum MOUSEFLAG : int { MOVE = 0x1, LEFTDOWN = 0x2, LEFTUP = 0x4, RIGHTDOWN = 0x8, RIGHTUP = 0x10, MIDDLEDOWN = 0x20, MIDDLEUP = 0x40, XDOWN = 0x80, XUP = 0x100, VIRTUALDESK = 0x400, WHEEL = 0x800, ABSOLUTE = 0x8000 } [Flags()] public enum KEYBOARDFLAG : int { EXTENDEDKEY = 1, KEYUP = 2, UNICODE = 4, SCANCODE = 8 } } }
將以下Function放到程式碼內:
/// <summary> /// 點擊滑鼠左鍵 /// </summary> static public void LeftClick() { LeftDown(); Thread.Sleep(200); LeftUp(); } /// <summary> /// 雙擊滑鼠左鍵 /// </summary> static public void LeftDoubleClick() { LeftClick(); Thread.Sleep(500); LeftClick(); } /// <summary> /// 按下滑鼠左鍵 /// </summary> static public void LeftDown() { Mouse.INPUT leftdown = new Mouse.INPUT(); leftdown.dwType = 0; leftdown.mi = new Mouse.MOUSEINPUT(); leftdown.mi.dwExtraInfo = IntPtr.Zero; leftdown.mi.dx = 0; leftdown.mi.dy = 0; leftdown.mi.time = 0; leftdown.mi.mouseData = 0; leftdown.mi.dwFlags = Mouse.MOUSEFLAG.LEFTDOWN; Mouse.SendInput(1, ref leftdown, Marshal.SizeOf(typeof(Mouse.INPUT))); } /// <summary> /// 放開滑鼠左鍵 /// </summary> static public void LeftUp() { Mouse.INPUT leftup = new Mouse.INPUT(); leftup.dwType = 0; leftup.mi = new Mouse.MOUSEINPUT(); leftup.mi.dwExtraInfo = IntPtr.Zero; leftup.mi.dx = 0; leftup.mi.dy = 0; leftup.mi.time = 0; leftup.mi.mouseData = 0; leftup.mi.dwFlags = Mouse.MOUSEFLAG.LEFTUP; Mouse.SendInput(1, ref leftup, Marshal.SizeOf(typeof(Mouse.INPUT))); }
點擊滑鼠只需要輸入以下:
LeftClick()
雙擊滑鼠只需要輸入以下:
LeftDoubleClick()
標籤: .NET
本文章網址:
https://www.ez2o.com/Blog/Post/csharp-Mouse-Control-Move-Click
https://www.ez2o.com/Blog/Post/134
https://www.ez2o.com/Blog/Post/csharp-Mouse-Control-Move-Click
https://www.ez2o.com/Blog/Post/134