PDA

Ver la Versión Completa : Mantener click izquierdo


Ramsay
23-05-2016, 23:34:42
Me ha gustado el codigo de este truco : http://www.clubdelphi.com/foros/showthread.php?t=80410 , ¿ se podria hacer un codigo para mantener el click izquierdo por un rato (5 segundos y despues soltar) , intente con un timer de click izquierdos pero no es lo mismo , ¿ como deberia hacerlo ?

ecfisa
24-05-2016, 03:05:31
Hola.

Un ejemplo con un TButton, dos TLabel y un TSpeedButton para resaltar el mouse presionado:

...
implementation

const
BTLEFTDOWN = 0;
BTLEFTUP = 1;

procedure ButtonLeftAction(DownUp: Integer);
var
si: array [0..1] of TInput;
begin
FillChar(si, SizeOf(si), 0);
si[0].Itype := INPUT_MOUSE;
si[0].mi.dwFlags := MOUSEEVENTF_LEFTDOWN;
si[1].Itype := INPUT_MOUSE;
si[1].mi.dwFlags := MOUSEEVENTF_LEFTUP;
Windows.SendInput(1, tagINPUT(si[DownUp]), SizeOf(TInput));
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Enabled := False;
Timer1.Interval := 1000;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Inc(FCount);
Label2.Caption := Format('%d',[FCount]);
if FCount = 5 then
begin
ButtonLeftAction(BTLEFTUP);
Label1.Caption := 'Botón izquierdo liberado';
Timer1.Enabled := False;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
p: TPoint;
sp: TSpeedButton;
begin
sp := SpeedButton1;
p := ClientToScreen(Point(sp.Left + 5, sp.Top + 5));
SetCursorPos(p.X, p.Y);
ButtonLeftAction(BTLEFTDOWN);
Label1.Caption := 'Botón izquierdo presionado';
Label2.Caption := '';
FCount := 0; // ( Variable privada de Form1 )
Timer1.Enabled := True;
end;


Vista:
http://s33.postimg.org/eyjkisewv/Ramsay.gif

Saludos :)

Ramsay
25-05-2016, 19:18:03
Gracias por la ayuda ecfisa.