[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;
debe importar y definir de éstos constante para trabajar con el ratón usando Win32API
utilizar el método de abajo para hacer la operación de
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);
}
Si usted quiere hacer un arrastre del ratón en primer lugar debería Enviar Ratón MouseDown (clic con el mouse) y mantenerlo pulsado al cambiar la posición del mouse en lugar de enviar MouseUp (clic de liberación), algo así.
sendMouseDown();
Cursor.Position = new Point(30,30);
sendMouseUp();
Un tema que podría estar interesado en es [UI Automation en .NET] (http://msdn.microsoft.com/en -us/library/ms753326 (v = vs.110) .aspx). - Además, tenga en cuenta que esas posiciones X e Y se encuentran en las coordenadas de la pantalla física (que son las mismas que las de Logico solo para 96 ppp, pero para otros DPI no lo son), la mayoría de .NET Framework usa coordenadas lógicas para todo). – BrainSlugs83