![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Эмкляция щелчка мыши [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;