PDA

Ver la Versión Completa : Mover el Cursor hasta llegar a X,Y


Alejo15x
06-11-2010, 07:37:42
Hola!

Estoy jugando con la API de windows, para una aplicación en creación.
Necesito mover el cursor (no finjir el click y ya), no. Moverlo hasta llegar a unas pocisiones TPoint.X y TPoint.Y

Esto es algo que cree, pero no funcióna es más, me paraliza la aplicación.
Ya que no estoy muy claro del algoritmo correcto para está acción.


procedure MoveMouse(X,Y:integer);
var FMousePos:TPoint;
begin
GetCursorPos(FMousePos);
repeat
SetCursorPos( FMousePos.X + 1 , FMousePos.Y + 1);
until (FMousePos.X = X) and (FMousePos.Y = Y);
end;

Como podría yo mover el mouse, hasta que llege ... ?.

ecfisa
06-11-2010, 08:54:10
Hola Alejo15x.

Por lo que veo en tu código, queres un desplazamiento en diagonal, ya que: SetCursorPos( FMousePos.X + 1 , FMousePos.Y + 1); ,
supongo, intenta incrementar la posición X e Y en la misma cantidad.

Una forma de hacerlo podría ser:

procedure MoveMouse(IniX, IniY, FinX, FinY, Espera: Integer);
begin
SetCursorPos(IniX, IniY); // posición inicial
repeat
if IniX < FinX then
Inc(IniX) // X hacia abajo
else
Dec(IniX); // X hacia arriba
if IniY < FinY then
Inc(iniY) // Y hacia abajo
else
Dec(IniY); // Y hacia arriba
SetCursorPos(IniX, IniY); // nueva posición
Sleep(Espera); // 0 en parámetro Espera (sin demora)
until (Mouse.CursorPos.X = FinX) or (Mouse.CursorPos.Y = FinY);
end;


Ejemplo de llamada:

procedure TForm1.Button1Click(Sender: TObject);
begin
MoveMouse(0, 0, Screen.Width-10, Screen.Height-10, 3);
MoveMouse(Screen.Width-10, Screen.Height-10, 0, 0, 6);
end;


Saludos. :)

Alejo15x
06-11-2010, 21:34:51
Muchas Gracias !.