Cómo simular el clic del mouse en C#?Cómo simular el clic del mouse en C#?
Respuesta
Un ejemplo que encontré
en algún lugar
here en el pasado. Podría ser de alguna ayuda:
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
public class Form1 : Form
{
[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);
//Mouse actions
private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
private const int MOUSEEVENTF_RIGHTUP = 0x10;
public Form1()
{
}
public void DoMouseClick()
{
//Call the imported function with the cursor's current position
uint X = (uint)Cursor.Position.X;
uint Y = (uint)Cursor.Position.Y;
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}
//...other code needed for the application
}
Somewhere being [here] (http://www.gamedev.net/topic/321029-how-to-simulate-a-mouse-click-in-c/) ¿quizás? – mpen
Bien jugado. Se agregó una referencia a la respuesta original –
Recibo un error con este código: Una llamada a la función PInvoke 'MyForm! MyForm.Form1 :: mouse_event' ha desequilibrado la pila. Esto es probable porque la firma de PInvoke administrada no coincide con la firma de destino no administrada. Compruebe que la convención de llamada y los parámetros de la firma PInvoke coinciden con la firma no administrada de destino. ¿Algunas ideas? – Abdulla
He combinado varias fuentes para producir el siguiente código, que actualmente estoy usando. También eliminé las referencias de Windows.Forms para poder usarlo desde la consola y las aplicaciones de WPF sin referencias adicionales.
using System;
using System.Runtime.InteropServices;
public class MouseOperations
{
[Flags]
public enum MouseEventFlags
{
LeftDown = 0x00000002,
LeftUp = 0x00000004,
MiddleDown = 0x00000020,
MiddleUp = 0x00000040,
Move = 0x00000001,
Absolute = 0x00008000,
RightDown = 0x00000008,
RightUp = 0x00000010
}
[DllImport("user32.dll", EntryPoint = "SetCursorPos")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool SetCursorPos(int x, int y);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool GetCursorPos(out MousePoint lpMousePoint);
[DllImport("user32.dll")]
private static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
public static void SetCursorPosition(int x, int y)
{
SetCursorPos(x, y);
}
public static void SetCursorPosition(MousePoint point)
{
SetCursorPos(point.X, point.Y);
}
public static MousePoint GetCursorPosition()
{
MousePoint currentMousePoint;
var gotPoint = GetCursorPos(out currentMousePoint);
if (!gotPoint) { currentMousePoint = new MousePoint(0, 0); }
return currentMousePoint;
}
public static void MouseEvent(MouseEventFlags value)
{
MousePoint position = GetCursorPosition();
mouse_event
((int)value,
position.X,
position.Y,
0,
0)
;
}
[StructLayout(LayoutKind.Sequential)]
public struct MousePoint
{
public int X;
public int Y;
public MousePoint(int x, int y)
{
X = x;
Y = y;
}
}
}
No puedo ver ninguna ventaja de este código fuente largo sobre lo que publicó Marcos Placona hace 17 meses. –
Dada la vaguedad de la pregunta, pensé que la gente podría beneficiarse de un ejemplo que les permite hacer algo más que un clic izquierdo, chupar un clic derecho o medio o permitir hacer clic y arrastrar. – Keith
Funciona muy bien. Vine aquí buscando algo como esto – CSharpie
Algunos controles, como Button en System.Windows.Forms, tienen un método "PerformClick" para hacer precisamente eso.
Esto fue útil para mí, ya que soy nuevo en C# gracias. – John
son algunas de las necesidades que no puedo ver a lo cúpula como Keith o Marcos Placona qué en vez de hacer
using System;
using System.Windows.Forms;
namespace WFsimulateMouseClick
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
button1_Click(button1, new MouseEventArgs(System.Windows.Forms.MouseButtons.Left, 1, 1, 1, 1));
//by the way
//button1.PerformClick();
// and
//button1_Click(button1, new EventArgs());
// are the same
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("clicked");
}
}
}
He probado el código que Marcos ha escrito y no trabajaron para mí. Lo que sea que se me haya dado a la coordenada Y, el cursor no se movió en el eje Y. El siguiente código funcionará si desea que la posición del cursor esté en relación con la esquina superior izquierda de su escritorio, no relativa a su aplicación.
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
private const int MOUSEEVENTF_MOVE = 0x0001;
public void DoMouseClick()
{
X = Cursor.Position.X;
Y = Cursor.Position.Y;
//move to coordinates
pt = (Point)pc.ConvertFromString(X + "," + Y);
Cursor.Position = pt;
//perform click
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
}
Solo uso la función mouse_event para realizar el clic. Usted puede dar a X e Y coordina lo que quiere, yo solía valores de cuadro de texto:
X = Convert.ToInt32(tbX.Text);
Y = Convert.ToInt32(tbY.Text);
, este es el correcto para mí, básicamente' Cursor.Position' es lo suficientemente bueno para colocar el cursor del mouse a donde quieras, luego utiliza WIN32API para hacer el clic real. –
Mouse.Click();
- 1. Simular clic real del mouse
- 2. win32: simular un clic sin simular el movimiento del mouse?
- 3. Cómo simular el clic del mouse con el control WebBrowser
- 4. Simular un clic del mouse en Flash mediante JavaScript
- 5. Simular clics del mouse en Python
- 6. ¿Cómo puedo simular los eventos del mouse desde el código?
- 7. Cómo simular MAYÚS + Tecla del mouse presionar en java
- 8. ¿Es posible SIMULAR un clic del mouse con un mouse hacia abajo y hacia arriba?
- 9. ¿Cómo puedo simular un clic del mouse en una posición determinada en la pantalla?
- 10. Linux, cómo capturar pantalla y simular movimientos del mouse
- 11. Simular clic del mouse/Detectar color debajo del cursor en Python
- 12. ¿Cómo simulamos un clic del mouse con Xlib/C?
- 13. Simular golpe con el mouse en javascript
- 14. Cómo simular clics del mouse y presionar teclas en F #
- 15. Triple Mouse Haga clic en C#?
- 16. Textarea pierde el foco en el clic del mouse?
- 17. python win32 simular haga clic en
- 18. Haciendo clic en el mouse enviando mensajes
- 19. ¿Cómo mover el cursor del mouse usando C#?
- 20. Distinga entre hacer doble clic con el mouse y hacer clic con el mouse en wpf
- 21. Simular un movimiento físico del mouse en Mac OS X
- 22. Cómo activar programáticamente un mouse, haga clic izquierdo en C#?
- 23. Liberando la captura del mouse y dejando que el clic del mouse pase
- 24. simular el movimiento del ratón en Ubuntu
- 25. Cómo simular el enlace de anclaje haga clic en
- 26. Google Map jQuery - obtener LatLng desde el clic del mouse
- 27. Deshabilitar el doble clic del mouse con javascript o jquery
- 28. Deshabilitar el clic del mouse cuando está fuera de div
- 29. Simular clics del mouse en Mac OS X no funciona para algunas aplicaciones
- 30. Cómo borrar JTextField cuando el mouse hace clic en JTextField
Es posible que desee proporcionar más información para que pueda obtener una respuesta útil. – Andy
¿Qué quieres decir con esto? ¿Es para fines de prueba? –
Consejo: Si su título es el mismo que su pregunta, entonces el título es demasiado largo o la pregunta es demasiado corta. En este caso, es lo último, tiene que dar mucho más contexto para que cualquiera tenga una posibilidad razonable de darle una respuesta útil. – Guffa