Имитация нажатия на кнопку мыши в Delphi

Приведенный пример демонстрирует использование API функции mouse_event() для имитации событий мыши. При нажатии кнопки Button2 программа перемещает курсор мыши на кнопку Button1 и щелкает по ней. Положение курсора мыши задается в «абсолютных» координатах («Mickeys»), где 65535 «Mickeys» равно ширине экрана.

Пример:

procedure TForm1.Button1Click(Sender: TObject); 
begin
  ShowMessage('Button 1 clicked'); 
end; 
  
procedure TForm1.Button2Click(Sender: TObject); 
var
  Pt : TPoint; 
begin
  {Позволим кнопке Button2 перерисоваться}
  Application.ProcessMessages; 
  {Найдем координаты центра button 1}
  Pt.x := Button1.Left + (Button1.Width div 2); 
  Pt.y := Button1.Top + (Button1.Height div 2); 
  {Преобразуем Pt к координатам экрана}
  Pt := ClientToScreen(Pt); 
  {Преобразуем Pt к "mickeys" (аболютным координатам курсора мышки}
  Pt.x := Round(Pt.x * (65535 / Screen.Width)); 
  Pt.y := Round(Pt.y * (65535 / Screen.Height)); 
  {Переместим курсор мыши}
  Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, Pt.x, Pt.y, 0, 0); 
  {Имитируем нажатие левой кнопки мыши}
  Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, Pt.x, Pt.y, 0, 0); 
  {Имитируем отпускание левой кнопки мыши}
  Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, Pt.x, Pt.y, 0, 0);
end; 
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Добавить комментарий