Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Эмкляция щелчка мыши [D6, WinXP]


maxXP ©   (2005-11-06 13:29:00) 

Подскажите как эмулировать щелчёк мыши.


jack128   (2005-11-06 13:31:00) [1]

procedure MouseClick(Pt: TPoint; BackCursor: boolean = True);

 function ScreenToAbsolute(const Pt: TPoint): TPoint;
 begin
   Result.x := Round(Pt.x * 65535 / GetSystemMetrics(SM_CXSCREEN));
   Result.y := Round(Pt.y * 65535 / GetSystemMetrics(SM_CYSCREEN));
 end;

var
OldPt: TPoint;
begin
 if BackCursor then
 begin
   if GetCursorPos(OldPt) then
     OldPt := ScreenToAbsolute(OldPt)
   else
     raise Exception.Create('Не могу получить координаты курсора');
 end;
 Pt := ScreenToAbsolute(Pt);
 {Переместим курсор мыши}
 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);
 if BackCursor then
   {Перемещаем курсор мыши обратно}
   Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, OldPt.x, OldPt.y, 0, 0);
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо