Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: XR32Y en 03 de Julio 2015, 01:33
-
Hola, soy nuevo en esto de la programación y necesito hacer un programa que de clicks de manera aleatoria o lo más parecido posible dentro de un rectángulo, he estado investigando en muchos lados cosas parecidas pero no encuentro nada :'( .
Hasta ahora hice un programa que sólo obtiene coordenadas X, Y y las puede fijar, pero lo que necesito es por ejemplo que desde esos puntos pueda fijar yo una especie de rectángulo para que cada cierto tiempo empieza a dar click en esas zonas.
En la imagen doy un ejemplo, dentro del rectángulo rojo necesito los clicks y lo que llevo actualmente con lo que he estado investigado es el programa que se ve a un lado, que sólo me marca X y Y y las puedo fijar.
(http://oi58.tinypic.com/r7kuc4.jpg)
Código:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Coordenadas_mouse
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
textBox1.Text = Cursor.Position.X.ToString();
textBox2.Text = Cursor.Position.Y.ToString();
}
private void Form1_Load(object sender, EventArgs e)
{
button1.Focus();
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Start();
button2.Focus();
}
private void button2_Click(object sender, EventArgs e)
{
timer1.Stop();
}
}
}
-
Hola a todos, ya solucioné lo del "rectángulo" de otra forma.
Lo único que necesito saber es cómo generar los click de manera aleatoria entre esas coordenadas.
-
Hola! Tienes que tener en cuenta el carácter orientado a eventos de C#. Cuando tiene lugar un evento, se ejecuta el código asociado al evento.
También puedes llamar el código asociado a un evento desde código. Por ejemplo:
El código asociado al evento click sobre el objeto SubGraphButton sería este:
private void SubGraphButton_Click(object sender, RoutedEventArgs args)
{
//Aquí el código
}
Ahora tú quieres llamar a ese código desde otro método. Lo invocarías así:
private void ChildNode_Click(object sender, RoutedEventArgs args)
{
SubGraphButton_Click(sender, args);
}
Esto no te da control sobre la posición de los clicks. Para tener ese control tendrías que usar una aproximación como la de este ejemplo:
//Esto reemplaza a Cursor.Position en WinForms
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern bool SetCursorPos(int x, int y);
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
public const int MOUSEEVENTF_LEFTDOWN = 0x02;
public const int MOUSEEVENTF_LEFTUP = 0x04;
//Esto simula un click con el botón izquierdo del ratón
public static void LeftMouseClick(int xpos, int ypos)
{
SetCursorPos(xpos, ypos);
mouse_event(MOUSEEVENTF_LEFTDOWN, xpos, ypos, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, xpos, ypos, 0, 0);
}
Saludos!