我试图通过在 Windows 7 中使用 user32.dll 模拟鼠标移动和点击来自动绘制类似于绘图的程序。
这是我所拥有的以及我如何使用它:
设置
[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 void LeftMouseDown()
{
mouse_event((int)(MouseEventFlags.LEFTDOWN), Cursor.Position.X, Cursor.Position.Y, 0, 0);
}
public void LeftMouseUp()
{
mouse_event((int)(MouseEventFlags.LEFTUP), Cursor.Position.X, Cursor.Position.Y, 0, 0);
}
绘图时
foreach (var contour in contours)
{
LeftMouseDown();
foreach (var point in contour)
{
var x = point.X + offsetX;
var y = point.Y + offsetY;
Cursor.Position = new Point(x, y);
//LeftMouseDown();
System.Threading.Thread.Sleep(2);
}
LeftMouseUp();
}
我试图模拟的是鼠标被点击并按住,移动到每个点的一堆点,contour
然后在移动到下一个点之前松开contour
。
问题在于,这只是在第一次移动时按住鼠标按钮,然后再松开。
TL;博士
当以编程方式移动鼠标时,如何保持鼠标左键单击?
我正在尝试在第三方应用程序中模拟绘图。(Microsoft LINQ 的 Whiteboard,IM 客户端。)