Code:

mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);

Application.ProcessMessages;

mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);

 

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

Code:

Begin

//---------

SwapMouseButton(true); // Поменять обратно - SwapMouseButton(false);

//---------

end;

 

Для этого можно воспользоваться API функцией ClipCursor(). Например, можно вставить следующий код в обработчик события формы OnMouseDown:

ClipCursor(&BoundsRect);

а следующий код в обработчик события формы OnMouseUp:

ClipCursor(NULL);

 Существуют функции winapi:

WM_LBUTTONDOWN

WM_RBUTTONDOWN

 Если проверить точку нажатия мышки таким вот образом:

...

SetForegroundWindow(WindowUO);

mouse_event(MOUSEEVENTF_MOVE,400,400,0,0);

...

то получилось, что мышка перемещалась не в те координаты(относительно разрешения монитора (800 на 600)) которые я задумал(в не зависимости от местоположения мышки она перемещалась строго по одному направлению на одинаковое расстояние), причем я сделал еще один вариант - dx=100, dy=100, но тогда перемещение мышки произошло в другую сторону(в сторону x=0 y=0 монитора)!

 GetCursorPos()

 Автор Spawn

Обрабатывай событие OnMouseMove. Координаты курсора можно получить следующим путем:

 Следующий пример показывает, как "подтолкнуть мышку" без вмешательства пользователя.

Можно через события OnMouseEnter/OnMouseLeave:

Затем считывать параметр FMouseInPos.

Code:

// if the result is 0, no mouse is present

 

function GetNumberOfMouseButtons: Integer;

begin

  Result := GetSysTemMetrics(SM_CMOUSEBUTTONS);

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

  ShowMessage('Your mouse has ' + IntToStr(GetNumberOfMouseButtons) + ' buttons.');

end;

 

Существует такой тип, как TMouse, который передаёт координаты мышки в любое время, так что помести в обработчик события нажатия мыши на форме его вызов. Подробнее смотри в хелпе.

 Лучше говорить, что существует объект класса TMouse, на него ссылается глобальная переменная Mouse из модуля Controls... А то человек кинется создавать свой экземпляр...

Code:

// Set example:

procedure TForm1.Button1Click(Sender: TObject);

begin

// will reset after system start

SetDoubleClickTime(1500);

end;

 

// Get example:

procedure TForm1.Button2Click(Sender: TObject);

begin

ShowMessage(IntToStr(GetDoubleClickTime));

end;