Mouse - simular o clique do mouse

Top  Previous  Next

// simular um clique no mouse

 

procedure MouseClick(const Duration: Word);

var

  Win: HWnd;

  Pt: TPoint;

  Msg: TMsg;

  FlagMouseDown, FlagMouseUp: DWord;

begin

  { Se os botões estiverem invertidos... }

  if MouseSwappedButtons then begin

    FlagMouseDown := MOUSEEVENTF_RIGHTDOWN;

    FlagMouseUp := MOUSEEVENTF_RIGHTUP;

  end else begin{ Se os botões estiverem normais... }

    FlagMouseDown := MOUSEEVENTF_LEFTDOWN;

    FlagMouseUp := MOUSEEVENTF_LEFTUP;

  end;

 

  { Obtém o handle da janela que está sob o cursor }

  Windows.GetCursorPos(Pt);

  Win := Windows.WindowFromPoint(Pt);

 

  { Inicia o click }

  mouse_event(FlagMouseDown, 0000);

 

  { Processa as mensagens do mouse pertencentes à janela sob o cursor }

  while PeekMessage(Msg, Win, WM_LBUTTONDOWN, WM_LBUTTONDOWN, PM_REMOVE) do

    DispatchMessage(Msg);

 

  Sleep(Duration);

 

  { Conclui o click }

  mouse_event(FlagMouseUp, 0000);

end;