Je suis en train d'essayer de dessiner automatiquement dans un programme similaire à paint en simulant le mouvement de la souris et les clics avec user32.dll sous Windows 7.
Voici ce que j'ai et comment je l'utilise :
Configuration
[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);
}
Lors du dessin
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();
}
Ce que j'essaie de simuler, c'est le maintien du clic gauche de la souris, le déplacement sur un tas de points dans chaque contour
puis de laisser la souris avant de passer au prochain contour
.
Le problème, c'est que cela maintient simplement le bouton de la souris enfoncé pour le premier mouvement, puis le relâche.
TL;DR
Comment puis-je maintenir le clic gauche de la souris enfoncé lorsque la souris est déplacée de manière programmatique ?
Je tente de simuler le dessin dans une application tierce (Tableau blanc de Microsoft LINQ, le client IM.)