Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Coordenadas en delphi (https://www.clubdelphi.com/foros/showthread.php?t=83098)

darkmaster360 10-05-2013 17:57:53

Coordenadas en delphi
 
Estaba intentando crear un autoclick y me preguntaba si se podría poner coordenadas, para clicar donde yo quiera, tenía este code antes:
Código Delphi [-]
procedure TForm1.Timer1Timer(Sender: TObject);
begin
SetCursorPos(X, Y);
Mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0 );
Mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0 );
end;

pero solo me dejaba cambiar las coordenadas en modo edición, ¿hay algún código para poder cambiarlas mientras lo usando?

ecfisa 10-05-2013 19:12:52

Cita:

Empezado por darkmaster360 (Mensaje 460235)
...
¿hay algún código para poder cambiarlas mientras lo usando?

Hola darkmaster360, bienvenido a Club Delphi :).

Como es costumbre con los que recién ingresan te invitamos a que leas nuestra guía de estilo.

En cuanto a tu consulta, claro que es posible cambiar las coordenadas en tiempo de ejecución, basta con asignar nuevos valores a las variables enviadas a la función SetWindowPos.

Pero, a priori veo que se te va a presentar un problema con la pérdida de foco que sufrirán los controles mediante los cuáles les asignas valores a las variables X e Y...

Saludos. :)

darkmaster360 11-05-2013 00:37:06

Muchas gracias ecfisa, no sabía el nombre de la función. También me surgió otra duda, ¿Se puede poner el ratón en el sitio que desee y al darle a una tecla, con la función Onkeydown, se queden guardadas las coordenadas?

ecfisa 11-05-2013 00:56:58

Cita:

Empezado por darkmaster360 (Mensaje 460272)
¿Se puede poner el ratón en el sitio que desee y al darle a una tecla, con la función Onkeydown, se queden guardadas las coordenadas?

Hola darkmaster360.

Si, sin ningún problema. Por ejemplo:

Código Delphi [-]
implementation

var
  MousePos : TPoint;

procedure TForm1.FormCreate(Sender: TObject);
begin
  KeyPreview := True;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
const
  MSG = 'Coordenadas actuales del mouse: %d %d'; 
begin
  if (ssCtrl in Shift) and (Key = VK_F1) then  // Ctrl+F1
    MousePos := Mouse.CursorPos;
  Caption := Format(MSG,[MousePos.X, MousePos.Y]); 
end;
La declaración de constante y la asignación a la propiedad Caption son a fín de que visualices la posición actual, es decir prescindibles.

Saludos. :)

darkmaster360 11-05-2013 19:51:45

Hola ecfisa.

El código funciona bien ^\||/

Ahora al pulsar el F1 (le cambie la tecla) se quedan las coordenadas, ¿habría alguna forma ahora de decirle a un timer que clickee en esas coordenadas?

Estuve buscando un poco en google pero no encontré nada solo vi algo de la función caption

Saludos. :)

ecfisa 12-05-2013 00:52:04

Cita:

Empezado por darkmaster360 (Mensaje 460295)
...
¿habría alguna forma ahora de decirle a un timer que clickee en esas coordenadas?

Hola.

Si, agregando el código de tu primer mensaje:
Código Delphi [-]
implementation

var
  MousePos : TPoint;

procedure TForm1.FormCreate(Sender: TObject);
begin
  KeyPreview := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  SetCursorPos(MousePos.X, MousePos.Y);
  Mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 );
  Mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 );
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
const
  MSG = 'Coordenadas actuales del mouse: %d %d'; 
begin
  if (ssCtrl in Shift) and (Key = VK_F1) then  // Ctrl+F1
    MousePos := Mouse.CursorPos;
  Caption := Format(MSG,[MousePos.X, MousePos.Y]); 
end;

Saludos :)

darkmaster360 12-05-2013 01:22:32

Hola ecfisa.

Ya está me funcionaba :D me faltaba añadir la línea:
Código Delphi [-]
SetCursorPos(MousePos.X, MousePos.Y);

y yo tenía:
Código Delphi [-]
SetCursosPos(X, Y);

puede que fuese eso pero ya esta solucionado, muchas gracias. Puedes cerrar el tema

Saludos :)


La franja horaria es GMT +2. Ahora son las 20:29:42.

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