PDA

Ver la Versión Completa : Movimiento del mouse


Chris
26-07-2007, 22:06:50
Hola a todos, la verdad es que tengo mucho tiempo de no visitar el club por cuestines de tiempo, pero bueno vuelvo en busca de ayuda. Alguien me podría dar una ayuda para detectar el movimiento del mouse fuera de la ventana de mi aplicación. Lo que necesito es medir en todo momento la distancia que tiene la posición actual del mouse con respecto a los bordes de mi ventana. de antemando agradezco su ayuda.

delphi.com.ar
26-07-2007, 23:03:44
Lo que necesitas hacer es un hook del tipo WH_MOUSE, fíjate si esto te es de utilidad: http://www.clubdelphi.com/foros/showthread.php?t=36672

Saludos!

roman
26-07-2007, 23:14:58
¿Y no bastaría con un timer?

// Saludos

egostar
26-07-2007, 23:27:45
¿Y no bastaría con un timer?

// Saludos

Perdon amigo roman, pero un timer te permite conocer la distancia del mouse de los bordes de la ventana:confused::confused:.


Alguien me podría dar una ayuda para detectar el movimiento del mouse fuera de la ventana de mi aplicación. Lo que necesito es medir en todo momento la distancia que tiene la posición actual del mouse con respecto a los bordes de mi ventana.


Salud OS.

Edito. pero si te permite saberlo EN TODO MOMENTO, :D:D:D

delphi.com.ar
26-07-2007, 23:32:27
¿Y no bastaría con un timer?
Si quiere una medición real, tipo Mouse Odometer (http://www.modometer.com), puede perderse algunos fragmentos del movimiento con un timer.


Saludos!

roman
26-07-2007, 23:32:30
Sí, creo que me pasé de escueto :o. Pones, por decir algo, en el evento OnTimer:


procedure TForm1.Timer1Timer(Sender: TObject);
begin
Caption := Format('(%d, %d)', [Abs(Mouse.CursorPos.X - Left), Abs(Mouse.CursorPos.Y - Top)]);
end;


No será en todo momento, pero puede acercarse bastante :)

// Saludos

roman
26-07-2007, 23:35:53
¡Ah! Ni hablar. Si se trata de eso entonces sí se requiere un hook.

// Saludos

Chris
27-07-2007, 16:11:53
Les agradezco la ayuda, pero creo que lo que me vendría mejor sería el hook por lo que intento hacer, disminuir o aumentar la transparencia de una ventana dependiendo de la distancia del mouse hacia esa ventana. (como lo hace la ventana que te aparece ahora en word 2007 cuando estás editando texto) :D

cHackAll
27-07-2007, 22:00:12
procedure TForm1.Timer1Timer(Sender: TObject);
var Point, Distance: TPoint; Value: Cardinal;
begin
GetCursorPos(Point);
Point := ScreenToClient(Point);
Distance := Classes.Point(0, 0);
if Point.X > Width then
Distance.X := Point.X - Width
else
if Point.X < 0 then
Distance.X := Point.X * -1;
if Point.Y > Height then
Distance.Y := Point.Y - Height
else
if Point.Y < 0 then
Distance.Y := Point.Y * -1;
Value := (Distance.X + Distance.Y) div 2;
if Value > 230 then Value := 230;
AlphaBlendValue := 255 - Value; // AlphaBlend := True; Timer1.Interval := ?;
end;