[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;
Si dovrebbe importare e definire di questi Constant a lavorare con il mouse utilizzando Win32API
Utilizza il metodo di seguito per fare del mouse Operazione di
void sendMouseRightclick(Point p)
{
mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, p.X, p.Y, 0, 0);
}
void sendMouseDoubleClick(Point p)
{
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, p.X, p.Y, 0, 0);
Thread.Sleep(150);
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, p.X, p.Y, 0, 0);
}
void sendMouseRightDoubleClick(Point p)
{
mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, p.X, p.Y, 0, 0);
Thread.Sleep(150);
mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, p.X, p.Y, 0, 0);
}
void sendMouseDown()
{
mouse_event(MOUSEEVENTF_LEFTDOWN, 50, 50, 0, 0);
}
void sendMouseUp()
{
mouse_event(MOUSEEVENTF_LEFTUP, 50, 50, 0, 0);
}
Se si vuole fare un trascinamento del mouse si deve prima Invia MouseDown (clic del mouse) e tienilo premuto mentre cambi la posizione del mouse rispetto a Send MouseUp (Release Click) qualcosa come questo.
sendMouseDown();
Cursor.Position = new Point(30,30);
sendMouseUp();
un argomento che potrebbe essere interessato a è [Automazione interfaccia utente in .NET] (http://msdn.microsoft.com/en -us/library/ms753326 (v = vs.110) aspx). - Inoltre, tieni a mente che le posizioni X e Y sono in coordinate fisiche dello schermo (che sono le stesse di Logical solo per 96 DPI - ma per altri DPI non lo sono - la maggior parte di .NET Framework utilizza le coordinate logiche per tutto). – BrainSlugs83