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;DR
プログラムでマウスを動かしているときに、マウスの左クリックを押したままにするにはどうすればよいですか?
サードパーティのアプリで描画をシミュレートしようとしています。(Microsoft LINQ のホワイトボード、IM クライアント。)