Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: andrecid en 11 Agosto 2014, 15:59 pm



Título: Pregunta sobre una aplicación de c#
Publicado por: andrecid en 11 Agosto 2014, 15:59 pm
Hola estoy creando un programa llamado Autoclick.
La verdad me costo mucho encontrar los codigos y ahora tengo unas cuantas preguntas:

¿Cómo puedo hacerlo más rápido?

La verdad es que me funcionan perfectamente pero no se como hacerlo más rápido y por más que busco no encuentro nada

¿Cómo puedo hacerlo lo menos detectable posible?

La cosa es que si activo en autoclick ay veces que me echan por que me lo detectan.

¿Como puedo hacer que el mouse no se me valla al sitio donde tengo las coordenadas?

La verdad esto no me gusta cuando le activo el mouse se va a las coordenadas y empieza a clickar no ay forma de que no se valla pero si que clike?

Código:
int x = Convert.ToInt16(textBox1.Text);
            int y = Convert.ToInt16(textBox2.Text);

            // Coordenadas del cursor
            Cursor.Position = new Point(x, y);

            mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0,0 ,0);
            mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);

Este no es todo el código pero es lo más importante según las personas.

Espero sus respuestas grax


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: Eleкtro en 11 Agosto 2014, 19:06 pm
La verdad me costo mucho encontrar los codigos y ahora tengo unas cuantas preguntas:

Copiando códigos ni vas a aprender ni mucho menos vas a ser capaz de desarrollar una herramienta rápida/eficaz, deberías cojer un libro/tutorial, leer y practicar hasta que sepas lo más básico.

· C# Programming Guide - MSDN (http://msdn.microsoft.com/en-us/library/67ef8sbd.aspx)
· C# Tutorials - MSDN (http://msdn.microsoft.com/en-us/library/aa288436%28v=vs.71%29.aspx)

¿Como puedo hacer que el mouse no se me valla al sitio donde tengo las coordenadas?

cuando le activo el mouse se va a las coordenadas y empieza a clickar no ay forma de que no se valla pero si que clike?

Fíjate en esta parte del código:

Citar
Código
  1. // Coordenadas del cursor
  2. Cursor.Position

Las propiedades 'Cursor.Position.X' y 'Cursor.Position.Y' contienen las coordenadas actuales de tu mouse, pásale esas coordenadas a los parámetros 'dx' y 'dy' de la función 'mouse_event'.

Código
  1. mouse_event(MOUSEEVENTF_LEFTDOWN, Cursor.Position.X, Cursor.Position.Y, Nothing, Nothing);
  2. mouse_event(MOUSEEVENTF_LEFTUP, Cursor.Position.X, Cursor.Position.Y, Nothing, Nothing);

(creo que eso debería solucionar el problema)

Saludos!


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: andrecid en 11 Agosto 2014, 19:40 pm
Gracias no pienses mal cuando dije copiar y pegar
Cuando dije eso me refiero a copiar i pegar en blog de notas y estudiar los codigos haber que puedo sacar

una vez más gracias.

Seria así?

Código:
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 1436, 7, 0);


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: andrecid en 11 Agosto 2014, 19:58 pm
.


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: Eleкtro en 11 Agosto 2014, 20:10 pm
No amigo , aun así se me va mueve el cursor mira te paso el codigo entero.

Código:
mouse_event(MOUSEEVENTF_LEFTDOWN, 1290, 317, 0, 0);
            mouse_event(MOUSEEVENTF_LEFTUP, 1290, 317, 0, 0);

1) Imagino que esas coordenadas las asignaste simplemente por probar, pero por si no es así lo comentaré de todas formas:
    Le estás pasando unas coordenadas fijas, no las coordenadas actuales de tu mouse como te indiqué.

2) Si leyeras la documentación del método, la cual te he mostrado 3 o 4 veces ya, verías que los parámetros 'dw' y 'dy' actuan como coordenadas RELATIVAS (es decir, moverse a un offset) a menos que especifiques el flag 'MOUSEEVENTF_ABSOLUTE' en el primer parámetro para que actuen como coordenadas absolutas.

dx & dy:
Citar
The mouse's absolute position along the x-axis or its amount of motion since the last mouse event was generated, depending on the setting of MOUSEEVENTF_ABSOLUTE. Absolute data is specified as the mouse's actual x-coordinate; relative data is specified as the number of mickeys moved. A mickey is the amount that a mouse has to move for it to report that it has moved.

dwflags:
Citar
· MOUSEEVENTF_ABSOLUTE

The dx and dy parameters contain normalized absolute coordinates. If not set, those parameters contain relative data: the change in position since the last reported position. This flag can be set, or not set, regardless of what kind of mouse or mouse-like device, if any, is connected to the system. For further information about relative mouse motion, see the following Remarks section.

Así que debes combinar los flags:
Código
  1. mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE, , , ,)

EDITO:
También dice:

Citar
If MOUSEEVENTF_ABSOLUTE value is specified, dx and dy contain normalized absolute coordinates between 0 and 65,535. The event procedure maps these coordinates onto the display surface. Coordinate (0,0) maps onto the upper-left corner of the display surface, (65535,65535) maps onto the lower-right corner.

Así pues, además de combinar los flags debes hacer una operación aritmética para ajustar las coordenadas:

VB.NET
Código
  1. Dim PosX As Integer = ((Cursor.Position.X * 65535I) / Screen.PrimaryScreen.Bounds.Width)
  2. Dim PosY As Integer = ((Cursor.Position.Y * 65535I) / Screen.PrimaryScreen.Bounds.Height)
  3.  
  4. mouse_event(MouseEventFlags.ABSOLUTE Or MouseEventFlags.MOVE Or MouseEventFlags.LEFTDOWN Or MouseEventFlags.LEFTUP,
  5.            PosX, PosY, Nothing, Nothing)

C#:
Código
  1. int PosX = ((Cursor.Position.X * 65535) / Screen.PrimaryScreen.Bounds.Width);
  2. int PosY = ((Cursor.Position.Y * 65535) / Screen.PrimaryScreen.Bounds.Height);
  3.  
  4. mouse_event(MouseEventFlags.ABSOLUTE | MouseEventFlags.MOVE | MouseEventFlags.LEFTDOWN | MouseEventFlags.LEFTUP, PosX, PosY, null, null);
  5.  
  6. //=======================================================
  7. //Service provided by Telerik (www.telerik.com)
  8. //Conversion powered by NRefactory.
  9. //Twitter: @telerik
  10. //Facebook: facebook.com/telerik
  11. //=======================================================


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: andrecid en 11 Agosto 2014, 20:24 pm
Pero yo quiero coordenadas, no quiero que al activar se ponga a dar click el ratón, lo que quiero es que empieza a dar click en un área determinada sin necesidad de que el ratón se mueva.


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: Eleкtro en 11 Agosto 2014, 20:26 pm
Pero yo quiero coordenadas, no quiero que al activar se ponga a dar click el ratón, lo que quiero es que empieza a dar click en un área determinada sin necesidad de que el ratón se mueva.

Lo siento, eso no es lo que me pareció que dijiste al principio:

¿Como puedo hacer que el mouse no se me valla al sitio donde tengo las coordenadas?
La verdad esto no me gusta cuando le activo el mouse se va a las coordenadas y empieza a clickar no ay forma de que no se valla pero si que clike?

De todas formas lee la edición de mi último comentario arriba, solo debes modificar las propiedades de 'cursor.position.x' y 'cursor.position.y' por las coordenadas que quieras.

Saludos


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: andrecid en 11 Agosto 2014, 20:31 pm
¿Dónde tengo que declarar los siguientes codigos?


Código:
mouse_event(MouseEventFlags.ABSOLUTE | MouseEventFlags.MOVE | MouseEventFlags.LEFTDOWN | MouseEventFlags.LEFTUP, PosX, PosY, null, null);


por que cuando los pongo me sale un error de que no están en el contexto actual

Arriba tiene usted mi código ¿Qué tengo mal en el?

Código:
int PosX = ((Cursor.Position.X * 65535) / Screen.PrimaryScreen.Bounds.Width);
int PosY = ((Cursor.Position.Y * 65535) / Screen.PrimaryScreen.Bounds.Height);

esa parte si me deja.


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: Eleкtro en 11 Agosto 2014, 20:55 pm
Código:
mouse_event(MouseEventFlags.ABSOLUTE | MouseEventFlags.MOVE | MouseEventFlags.LEFTDOWN | MouseEventFlags.LEFTUP, PosX, PosY, null, null);

por que cuando los pongo me sale un error de que no están en el contexto actual

Porque en lugar de Constantes yo utilicé una Enum y la llamé 'MouseEventFlags', tu tienes las Constantes definidas, utilizalas:

Código:
MOUSEEVENTF_ABSOLUTE
MOUSEEVENTF_MOVE
MOUSEEVENTF_LEFTDOWN
MOUSEEVENTF_LEFTUP

Si no tienes alguna constante definidia, ya te las mostré en la documentación con los respectivos valores que debes asignarles: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646260%28v=vs.85%29.aspx

+
· enum (C# Reference) (http://msdn.microsoft.com/en-us/library/sbbt4032.aspx)
· const (C# Reference) (http://msdn.microsoft.com/en-us/library/e6w8fe1b.aspx)

Si no eres capaz de diferenciar y corregir una minucia como la que te ha ocasioando este problema entonces sin ánimo de ofender te digo que no deberías intentar desarrollar programas de "autoclicks" ni manejarte con la Windows API, debes seguir estudiando y aprender lo básico, no lo quieras poder hacer todo en 1 solo día.

Saludos!


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: andrecid en 11 Agosto 2014, 20:59 pm
Código:
mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE, 0, 0, 0, 0);



Ya he conseguido que fuincionara pero aun así me dice que no se existe en el contecto actual:

Código:
 MouseEventFlags
MousMouseEvent
MouseEventFlags
PosX, PosY

Lo otro ya me deja.


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: Eleкtro en 11 Agosto 2014, 21:01 pm
me dice que no se existe en el contecto actual:

Copia y pega aquí el mensaje de la excepción, y comenta cual es el valor que hace saltar dicho error.


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: andrecid en 11 Agosto 2014, 21:03 pm
Error   1   El nombre 'MouseEventFlags' no existe en el contexto actual   
Error   2   El nombre 'MouseEventFlags' no existe en el contexto actual   
Error   4   El nombre 'MouseEventFlags' no existe en el contexto actual   
Error   5   No se puede usar la variable local 'PosX' antes de declararla   
Error   6   No se puede usar la variable local 'PosY' antes de declararla   


aun que creo que los 2 últimos se por que es.


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: Eleкtro en 11 Agosto 2014, 21:07 pm
1 a 4: Reemplaza los 'MouseEventFlags' por tus constantes como te expliqué.
5 y 6: Declara en el código las variables con nombre 'PosX' y 'PosY' antes de pretender utilizarlas.


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: andrecid en 11 Agosto 2014, 21:10 pm
Me da un error

Remplazo eso por esto:
Código:
private const int MOUSEEVENTF_LEFTDOWN = 2;
        private const int MOUSEEVENTF_MOVE = 2;
        private const int MOUSEEVENTF_ABSOLUTE = 2;
        private const int MOUSEEVENTF_LEFTUP = 4;

no?

Si es así me da este error
Error   1   Argumento 4: no se puede convertir de '<null>' a 'int'   



Me he dado cuando que solo sale si pongo null,null

cambie null a 0,0 y no me sale error pero sigue llevandose el raton para clikar
Código:
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 1290, 317, 0,0 );


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: Eleкtro en 11 Agosto 2014, 21:18 pm

Remplazo eso por esto:
Código:
private const int MOUSEEVENTF_LEFTDOWN = 2;
        private const int MOUSEEVENTF_MOVE = 2;
        private const int MOUSEEVENTF_ABSOLUTE = 2;
        private const int MOUSEEVENTF_LEFTUP = 4;

no?

Si pero le asignaste los valores erroneos a 'MOUSEEVENTF_MOVE' y 'MOUSEEVENTF_ABSOLUTE'.

Como ya te he explicado, aquí tienes los nombres de los flags junto a sus respectivos valores: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646260%28v=vs.85%29.aspx


Error   1   Argumento 4: no se puede convertir de '<null>' a 'int'

pásale como valor '0' en lugar de 'null', o también puedes modificar/adaptar la declaración de la API.


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: andrecid en 11 Agosto 2014, 21:40 pm
Haber he modifcado cosas y ahora no me da error pero aun así el mouse se mueve hacia las coordenadaas.


Código:
private const int MOUSEEVENTF_LEFTDOWN = 0x0002;
        private const int MOUSEEVENTF_MOVE = 0x0001;
        private const int MOUSEEVENTF_ABSOLUTE = 0x8000;
        private const int MOUSEEVENTF_LEFTUP = 0x0004;

Código:
 int x = Convert.ToInt16(textBox1.Text);
            int y = Convert.ToInt16(textBox2.Text);
          
            // Coordenadas del cursor
            Cursor.Position = new Point(x,y);
            mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE, x,y, 0, 0);
            
            mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

            int PosX = ((x * 65535) / Screen.PrimaryScreen.Bounds.Width);
            int PosY = ((y * 65535) / Screen.PrimaryScreen.Bounds.Height);
            mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,x, y, 0,0 );


Código:
Point cursor = new Point();
            GetCursorPos(out cursor);
            int x = cursor.X;
            int y = cursor.Y;

            label1.Text = x.ToString();

            label2.Text = y.ToString();
          
            if (GetAsyncKeyState(Keys.F2) == -32767)
            {
                timer1.Start();

            }
            if (GetAsyncKeyState(Keys.F3) == -32767)
            {
                timer1.Stop();
            }
            if (GetAsyncKeyState(Keys.F4) == -32767)
            {
                textBox1.Text = x.ToString();
                textBox2.Text = y.ToString();
            }
        }


Haber si puedes encontrar el problema

Tengo otro problema cuando le asigno a Move0x0001
se me va el mouse a una esquina


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: Eleкtro en 11 Agosto 2014, 22:12 pm
Haber he modifcado cosas y ahora no me da error pero aun así el mouse se mueve hacia las coordenadaas.

No entiendo lo que quieres, primero insinuas que no quieres que se muevan, luego que si, y ahora parece otra vez que no.

Porfavor se preciso son tu pregunta.

Saludos


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: andrecid en 11 Agosto 2014, 22:18 pm
No quiero que le mouse se mueve a las coordenadas quiero que se de click pero sin que el mouse se mueva. Cuando activo el programa el mouse automaticamnte se mueve donde el Setpoins y empieza a clikar yo quiero que clike pero sin moverse el mouse:


El del Escritorio no el hardware


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: Eleкtro en 11 Agosto 2014, 22:44 pm
No quiero que le mouse se mueve a las coordenadas quiero que se de click pero sin que el mouse se mueva

Para realizar un click virtual entonces debes olvidarte de la función mouse_event.

Debes conocer el Handle del elemento al que quieres enviarle un evento del mouse, y usar la función SendMessage y/o PostMessage para postear los Messages del evento del mouse (WM_LBUTTONDOWN,  WM_LBUTTONUP) en la cola (Input queue) del programa: http://msdn.microsoft.com/en-us/library/windows/desktop/ms645607%28v=vs.85%29.aspx

No es que sea algo sencillo, se requiere bastante P/Invoking y un mínimo de conocimientos sobre IPC (Inter-process communication), y tampoco nunca lo he intentado.

Saludos


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: andrecid en 11 Agosto 2014, 22:49 pm
No un click virtual no,
por ejemplo en Vb pongo los mismo codigos y el raton no se mueve pero da click.
sin embargo aqui el raton siempre se mueve dando click. ( A la zona setpoins)


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: Eleкtro en 11 Agosto 2014, 22:56 pm
Quieres hacer click en unas coordenadas específicas, pero sin que el puntero del ratón de tu pantalla se mueva a esas coordenadas, ¿es así?

Entonces eso es un click virtual y requiere la labor que comenté.


por ejemplo en Vb pongo los mismo codigos y el raton no se mueve pero da click.

mouse_event es una de las miles de funciónes de la API de Windows, actua de la misma manera en cualquier lenguaje.

saludos


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: andrecid en 11 Agosto 2014, 22:59 pm
Ok muchas gracias =mente me sirvieron tus enseñanzas gracias.


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: Eleкtro en 11 Agosto 2014, 23:15 pm
De nada pero es que al decir que quieres hacer un click a "X" sin mover el mouse te estás metiendo en una zona donde requiere bastantes conocimientos, experiencia, y mucha lectura... más si se tratase de un juego online por una web, que no tienes acceso ni a un ensamblado al que enviarle el evento del mouse, puf, no se ni como se podría hacer en ese caso como ya digo nunca lo intenté pero seguramente sería más viable modificando packets,
sea como sea debes intentar hacer cosas más simples por el momento.

Saludos


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: andrecid en 11 Agosto 2014, 23:26 pm
Muchas gracias , espero que nunca te vallas del foro.


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: andrecid en 12 Agosto 2014, 19:57 pm
Tengo una duda más si le asigno los valores buenos a Move el ratón se me va a una esquina y no hace caso a las coordenadas.

¿Que puede ser?

Coordenadas a la que se va (0,0)


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: Eleкtro en 12 Agosto 2014, 21:05 pm
¿Que puede ser?

Debes combinar los flags 'ABSOLUTE' y 'MOVE' (solo esos), y modificar las coordenadas como en el ejemplo anterior:

Citar
Código
  1. int PosX = ((x * 65535) / Screen.PrimaryScreen.Bounds.Width);
  2. int PosY = ((y * 65535) / Screen.PrimaryScreen.Bounds.Height);

saludos


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: Eleкtro en 13 Agosto 2014, 13:57 pm
Para ahorrarte la mayor parte del trabajo te vendría bien esta librería:

· Windows Input Simulator (C# SendInput Wrapper - Simulate Keyboard and Mouse) (http://inputsimulator.codeplex.com/)

Nota: Debes descargar el Source y compilarlo, porque el proyecto compilado que hay para descargar está bastante incompleto y sin los métodos para el Mouse.

Nota 2: De todas formas SendInputs tampoco te servirá para mover el mouse de forma virtual, como ya expliqué, pero para todo lo demás si.

Saludos.


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: andrecid en 13 Agosto 2014, 15:47 pm
Gracias el error me di cuenta cuendo me enseñaste:

int PosX = ((x * 65535) / Screen.PrimaryScreen.Bounds.Width);
int PosY = ((y * 65535) / Screen.PrimaryScreen.Bounds.Height);



Yo en el otro codigo sustituia :

Posx y posy por otro pero ya lo puse bien.

Gracias


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: andrecid en 31 Octubre 2014, 18:36 pm
Hola! estuve leyendo cosas sobre C# y bueno veras ya entiendo bastante sobre estos codigos , los estuve estudiando y leyendo ,  pero ahora me surge otra duda.

¿Cómo puedo aumentar la velocidad?

Me han dicho una forma pero seguro que ay más:

Código:
mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE, 0, 0, 0, 0);



Me han dicho que aumentado ese código se aumenta la velocidad pero quiero encontrar más formas

Gracias


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: Eleкtro en 31 Octubre 2014, 19:05 pm
¿Que quieres decir por "aumentar la velocidad"?.

El mensaje lo procesa Windows, tarda el tiempo que debe tardar en procesarlo para ir del punto A al punto B.

Si quieres mejorar el rendimiento general de lo que estás haciendo entonces deja de utilizar la obsoleta función mouse_event como creo recordar que ya te comenté en un principio... no estoy seguro, y en su lugar usa la función SendInput.

Saludos


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: andrecid en 31 Octubre 2014, 19:11 pm
Ok, tienes razón , y si me lo comentaste. Ahora usare SendInput.
Pero lo que me refería era la potencia , no velocidad.

Perdón por explicarme tan mal.


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: Eleкtro en 31 Octubre 2014, 19:13 pm
Pero lo que me refería era la potencia , no velocidad.

Aun así sigo sin entender a lo que te refieres, ¿cómo la potencia, del mouse? :-/

Si puedes, intenta dar un ejemplo de lo que pretendes hacer/mejorar.

Saludos


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: andrecid en 31 Octubre 2014, 20:14 pm
Hola a ver si ahora me entiendes.

Lo que quiero decir es ¿Cómo puedo aumentar la velocidad de los clicks por segundo? Se que en parte son los timers pero no ay otro modo?

Y otra cosita , me estuve leyendo algunos libros de C# y me encanto , pero no se cuales son los que debería de leer , y me gustaría que si pudieses, me recomiendes algunos.

Gracias


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: Eleкtro en 31 Octubre 2014, 23:18 pm
Lee esta respuesta:

Dudas con Timer como sustituto de Sleep -- por precisión del tiempo (http://foro.elhacker.net/net/dudas_con_timer_como_sustituto_de_sleep_por_precision_del_tiempo-t418910.0.html;msg1956647#msg1956647)

Cita de: Eleкtro
El 'System.Windows.Forms.Timer' como el 'System.Timers.Timer' tienen una precisión media de 10 a 55 ms según la versión de Windows en ejecución (y otros factores a tener en cuenta como el consumo de las otras aplicaciones que estén en segundo plano), y estos no están diseñados para cronometrar de forma precisa, sino para desencadenar eventos en un intervalo específico.

Como ya dije, depende de varios factores del SO, y también del tiempo que necesite la página web o programa al que estés enviando esos clicks para procesarlos.

Utilizando un StopWatch consigo realizar una media de 1.200 pulsaciones/simulaciones de clicks por segundo, mientras que con un Timer con intervalo de 1 milisegundo consigo una media de 65 clicks por segundo, estos datos pueden cambiar en función de la metodología que utilices y del PC en cuestión y todo el resto de factores a tener en cuenta.

EDITO: Claro que si duplicas la cantidad de Timers que envien más clicks la media se duplicará también.
Si quieres colapsar al SO con miles de operaciones asíncronas por segundo, bueno... no seré yo quien te detenga, sabrás lo que haces.


Sobre el aprendizaje autodidacta de .NET, esta es la mejor forma de aprender:

Manuales de .NET (http://foro.elhacker.net/net/manuales_de_net-t122607.0.html;msg1960666#msg1960666)


Saludos.


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: andrecid en 2 Noviembre 2014, 13:48 pm
Hola , la verdad me has ayudado bastante pero si te digo la verdad estoy liado, por que en otro post me dijiste que en

Código:
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0,0 ,0);
            mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);

El 1º era los clicks , 2 coordenadas , 3 coordenadas y 4 que era chungo , pero ahora me has dicho que : es así

Código:
mouse_event(MOUSEEVENTF_LEFTUP,x, y, 0, 0);

cual de los 2 es el correcto?




Título: Re: Pregunta sobre una aplicación de c#
Publicado por: Eleкtro en 2 Noviembre 2014, 14:19 pm
Hola , la verdad me has ayudado bastante pero si te digo la verdad estoy liado, por que en otro post me dijiste que en

Código:
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0,0 ,0);
            mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);

El 1º era los clicks , 2 coordenadas , 3 coordenadas y 4 que era chungo , pero ahora me has dicho que : es así

Código:
mouse_event(MOUSEEVENTF_LEFTUP,x, y, 0, 0);

cual de los 2 es el correcto?

Ambos son correctos.

La única diferencia es que en el primer ejemplo las coordenadas son "0", y en el segundo ejemplo son variables, bueno, aparte de que usas flags distintos en cada ejemplo para el primer parámetro, claro está.

No entiendo tu pregunta, eso ya no recuerdo ni cuando "te lo dije", pero la información es correcta y sigue siendo la misma, lo puedes comprobar tu mismo en la documentación de MSDN: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646260%28v=vs.85%29.aspx

1er parámetro: evento(s) del mouse (o "flags")
2do parámetro: coordenada X
3er parámetro coordenada Y
4to parámetro: datos adicionales relacionados con el evento
5to parámetro : información extra


saludos


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: andrecid en 2 Noviembre 2014, 15:06 pm
aa vale ya entiendo eso ok , pero ahora lo que no entiendo ( cosa que me jode) por que lo utilizo, es este codigo:


Código
  1. mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, x,y,0,0);
  2. mouse_event(MOUSEEVENTF_LEFTUP   | MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE, x, y, 0, 0);


la cosa es que uso los 2 pero no se cual es el adecuado.



Título: Re: Pregunta sobre una aplicación de c#
Publicado por: Eleкtro en 2 Noviembre 2014, 15:37 pm
Código
  1. mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, x,y,0,0);
  2. mouse_event(MOUSEEVENTF_LEFTUP   | MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE, x, y, 0, 0);

la cosa es que uso los 2 pero no se cual es el adecuado.

En la primera instrucción estás realizando un "click" del botón izquierdo.
( Click = Presionar botón + Soltar botón )

En la segunda instrucción solo estás soltando el botón izquierdo.

¿Contesta eso a tu pregunta?, si tu intención es hacer un click entonces la segunda instrucción no te sirve ya que solo estás soltando el botón, de hecho es completamente innecesarío porque el botón ya lo sueltas en la primera instrucción.

Saludos!


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: andrecid en 2 Noviembre 2014, 15:40 pm
Modifico:

Entonces en cual caso es mejor usar:

Código:
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, x, y, 0, 0);

o
Código:
mouse_event(  MOUSEEVENTF_LEFTUP, x, y, 0, 0)
mouse_event (MOUSEEVENTF_DOWN,x,y,0,0


Título: Re: Pregunta sobre una aplicación de c#
Publicado por: Eleкtro en 3 Noviembre 2014, 07:16 am
La primera opción, ah no ser que quieras dejar un delay o realizar otro tipo de operaciones/comprobaciones entre llamada y llamada por el motivo que sea y en ese caso mejor sería la segunda opción.

Si te funciona bien la primera opción para tus intenciones entonces sigue usándola, es un código más simplificado.

PD: Además, en la segunda opción faltaría otra instrucción más, para mover el mouse.

saludos