Pregunta sobre una aplicación de c#

Iniciado por andrecid, 11 Agosto 2014, 15:59 PM

0 Miembros y 1 Visitante están viendo este tema.

andrecid

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.

Eleкtro

Cita de: andrecid en 31 Octubre 2014, 19:11 PMPero 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








andrecid

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

Eleкtro

#33
Lee esta respuesta:

Dudas con Timer como sustituto de Sleep -- por precisión del tiempo

Cita de: EleкtroEl '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


Saludos.








andrecid

Hola , la verdad me has ayudado bastante pero si te digo la verdad estoy liado, por que en otro post me dijiste que en

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í

mouse_event(MOUSEEVENTF_LEFTUP,x, y, 0, 0);

cual de los 2 es el correcto?



Eleкtro

Cita de: 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

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í

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








andrecid

#36
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 (csharp) [Seleccionar]
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, x,y,0,0);
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.


Eleкtro

#37
Cita de: andrecid en  2 Noviembre 2014, 15:06 PM
Código (csharp) [Seleccionar]
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, x,y,0,0);
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!








andrecid

#38
Modifico:

Entonces en cual caso es mejor usar:

mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, x, y, 0, 0);

o

mouse_event(  MOUSEEVENTF_LEFTUP, x, y, 0, 0)
mouse_event (MOUSEEVENTF_DOWN,x,y,0,0

Eleкtro

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