指挥鼠标事件点击,双击

我试过[DllImport(“user32.dll”)] static extern bool SetCursorPos(int X,int Y);

并且它可以很好地将光标移动到所需的点。 我从来没有尝试过这种类型的DLL导入,但它的工作原理:)。 但是我想要更多我能提取的内容吗? 主要是我想要双击,单击或使用滚轮选项而无需任何鼠标输入,只需要代码我该怎么做? 以及如何查看user32dll中还包含哪些内容?

感谢名单

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, UIntPtr dwExtraInfo); private const uint MOUSEEVENTF_LEFTDOWN = 0x02; private const uint MOUSEEVENTF_LEFTUP = 0x04; private const uint MOUSEEVENTF_RIGHTDOWN = 0x08; private const uint MOUSEEVENTF_RIGHTUP = 0x10; 

您应该使用Win32API导入和定义这些常量以使用鼠标

使用下面的方法进行鼠标操作

 void sendMouseRightclick(Point p) { mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, pX, pY, 0, 0); } void sendMouseDoubleClick(Point p) { mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, pX, pY, 0, 0); Thread.Sleep(150); mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, pX, pY, 0, 0); } void sendMouseRightDoubleClick(Point p) { mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, pX, pY, 0, 0); Thread.Sleep(150); mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, pX, pY, 0, 0); } void sendMouseDown() { mouse_event(MOUSEEVENTF_LEFTDOWN, 50, 50, 0, 0); } void sendMouseUp() { mouse_event(MOUSEEVENTF_LEFTUP, 50, 50, 0, 0); } 

如果你想做一个鼠标拖动你应该首先发送MouseDown(鼠标点击)并保持它单击时改变鼠标位置比发送鼠标(释放点击)这样的东西。

 sendMouseDown(); Cursor.Position = new Point(30,30); sendMouseUp(); 

使用long类型会引发“PInvoke”错误。

我们应该使用int类型:

 [DllImport("user32.dll")] static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo); [Flags] public enum MouseEventFlags { LEFTDOWN = 0x00000002, LEFTUP = 0x00000004, MIDDLEDOWN = 0x00000020, MIDDLEUP = 0x00000040, MOVE = 0x00000001, ABSOLUTE = 0x00008000, RIGHTDOWN = 0x00000008, RIGHTUP = 0x00000010 } public static void LeftClick(int x, int y) { Cursor.Position = new System.Drawing.Point(x, y); mouse_event((int)(MouseEventFlags.LEFTDOWN), 0, 0, 0, 0); mouse_event((int)(MouseEventFlags.LEFTUP), 0, 0, 0, 0); } 

来源: http : //www.pinvoke.net/default.aspx/user32.mouse_event

请查看pinvoke.net以获取可用API的列表。 包含代码示例和import语句。 您还可以展开左侧的选择以查看每个DLL的可用API。