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

Título: C# Simular Clicks aleatorios en zona rectangular, generar clicks automáticamente
Publicado 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:
Código: [Seleccionar]
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();
        }
    }
}
Título: Re:[AYUDA C#] Clicks aleatorios en zona rectangular.
Publicado por: XR32Y en 03 de Julio 2015, 04:59
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.
Título: Re:C# Simular Clicks aleatorios en zona rectangular, generar clicks automáticamente
Publicado por: César Krall en 03 de Julio 2015, 15:20
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:

Código: [Seleccionar]
    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í:
Código: [Seleccionar]
    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:

Código: [Seleccionar]
//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!