Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Puntero virtual (https://www.clubdelphi.com/foros/showthread.php?t=58064)

rauros 07-07-2008 16:04:56

Puntero virtual
 
Saludos. Primero, he buscado en la funcion "buscar" puntero virtual, pero encontraba "puerto virutal" u otras cosas que no me sirven, por eso abro un nuevo hilo. Me gustaría saber como se puede hacer un "puntero virutal", que clique en una posición determinada de una ventana, y a ser posible, si que esta esté la primera. Ya tengo la manera de localizar la ventana (handle), así que solo necesito lo del puntero. Gracias.

kuan-yiu 07-07-2008 16:42:41

Creo que no te entiendo... ¿Por puntero no te referirás al ratón? Si es así debes buscar por "mouse" no por "puntero".

felipe88 07-07-2008 16:50:35

Cita:

Empezado por kuan-yiu (Mensaje 298687)
Creo que no te entiendo... ¿Por puntero no te referirás al ratón? Si es así debes buscar por "mouse" no por "puntero".

Ademas creo que es "virtual" no "virutal" :rolleyes:;):p...

Que tal una busqueda por cursor :)

rauros 07-07-2008 17:53:02

Busco pero no encuentro nada... ¿Alguna ayudita? Lo que quiero hacer exactamente es algo como:

FindWindow(tal y cual);
SendMouseClick(posición x, posición y);

Y automáticamente un cursor virtual (si es preferible, uno que no tenga nada que ver con el de verdad) clica en en la posición "x" "y".

felipe88 07-07-2008 20:39:42

Al hacer click en esa parte de la ventana lo haces sobre algun componente visual?

Bueno el caso es que encontre algo sobre la funcion SetCursorPos y en esta pagina encontre un articulo, espero te sea de ayuda :)

http://delphi.about.com/od/vclusing/a/mouseadvanced.htm

coso 07-07-2008 21:52:12

Hola. Puedes crear uno, mediante un Timage y cargando en ella el cursor para luego moverla hacia donde te interesa. Si lo que quieres es mover el cursor real, entonces deberias enviar mensajes al mouse, de manera parecida a como se envian teclas virtuales. Desconozco el tema en profundidad :o pero seguro que por el foro encuentras ejemplos que puedas adaptar. Saludos

PD: rectifico, he probado el setcursorpos y va muy bien.

rauros 08-07-2008 22:25:02

Pero SetCursorPos maneja el cursor real, ¿No?. Y con la imagen esa que dices, no sé si se podrá usar para "clicar", porque yo no quiero que se vea el cursor virtual. Para que te hagas una idea, lo que quiero hacer es un programa-robot para un juego, y lo que quiero es que el programa haga una tarea repetidas veces mientras haces otra cosa.

felipe88 08-07-2008 22:31:20

Cita:

Empezado por rauros (Mensaje 298965)
Pero SetCursorPos maneja el cursor real, ¿No?. Y con la imagen esa que dices, no sé si se podrá usar para "clicar", porque yo no quiero que se vea el cursor virtual. Para que te hagas una idea, lo que quiero hacer es un programa-robot para un juego, y lo que quiero es que el programa haga una tarea repetidas veces mientras haces otra cosa.

Y hace click sobre algun componente visual? o dibuja algo? :confused:

rauros 08-07-2008 22:32:20

Perdón, quiero hacer clic sobre un botón que siempre es visualmente el mismo (no se si eso es a lo que te refieres).

felipe88 08-07-2008 22:40:54

Cita:

Empezado por rauros (Mensaje 298969)
Perdón, quiero hacer clic sobre un botón que siempre es visualmente el mismo (no se si eso es a lo que te refieres).

Entonces simplemente haces esto:

Código Delphi [-]
boton.click;

Creo que es asi :rolleyes:... espero te sirva

rauros 09-07-2008 00:15:52

pero el botón de otra aplicación no hecha por mí ^^.

kuan-yiu 09-07-2008 08:11:44

Entonces envíale un evento a ese programa.
Primero tienes que capturar la ventana de ese programa y luego enviarle los eventos que necesites a los componentes que quieras (como pulsar ese botón).
Este foro tiene una sección "API de windows" en la que seguramente encontrarás información al respecto.

felipe88 10-07-2008 14:50:36

Y que paso al fin... encontraste la manera de pasar eventos a otra aplicacion?:confused:

Seria interezante, tambien me gustaria conocer algo al respecto sobre este tema...:)

rauros 10-07-2008 22:25:15

Esperad un par de días, que toy ocupao y os digo como me ha ido, si bien os explico, y si mal os explico también. Pero gracias a todos.

felipe88 10-07-2008 22:33:34

Cita:

Empezado por rauros (Mensaje 299422)
Esperad un par de días, que toy ocupao y os digo como me ha ido, si bien os explico, y si mal os explico también. Pero gracias a todos.

Claro, no hay problema :)

rauros 11-07-2008 02:58:34

Al final lo pude probar hoy. Funciona a la perfección, incluso me he hecho un procedimiento que simula un click, solo con una línea de comando:

Código Delphi [-]
procedure SimularClick(X: integer; Y: Integer);
var tp: TPoint;
begin
Windows.GetCursorPos(tp);
SetCursorPos(x,y);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or
               MOUSEEVENTF_LEFTDOWN,
               x, y, 0, 0) ;;
Mouse_Event(MOUSEEVENTF_ABSOLUTE or
               MOUSEEVENTF_LEFTUP,
               x, y, 0, 0) ;;
SetCursorPos(TP.X,tp.Y)
end;

mamaro 22-07-2008 17:43:57

Excelente!! muchas gracias no sabés como me facilitaste la vida

.. te menciono en los créditos :D

rauros 22-07-2008 18:17:27

Créditos? Qué créditos?

mamaro 23-07-2008 13:00:22

En los agradecimientos del programa .. :D

.. estoy haciendo un programilla en el que realiza un clic pre-programado, o sea tu le indicas dónde quieres el clic y la hora de disparo y el software hace el resto.

Por ahora la ventana (y el lugar) dónde se hace el clic tiene que estar visible, no en primer plano, pero sí visible ... estoy trabajando para poder restaurar la ventana antes de realizar el clic y de esa forma la dejas tranquilamente minimizada y al momento del disparo la aplicación hace todo.


La franja horaria es GMT +2. Ahora son las 00:13:59.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi