15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту

Borland C++ Builder FAQ
Составлен по материалам форума на Исходниках.Ru
Содержание Последнее обновление: 14.02.2004

Как узнать или изменить позицию курсора мыши? Как эмулировать нажатия кнопок мыши?

Автор: OlegGG
Исходная ссылка: - - -

Установить координаты курсора можно, используя функцию SetCursorPos:
SetCursorPos(random(Screen->Width),random(Screen->Height));

Узнать координаты курсора можно так:
POINT cur_pos;
GetCursorPos(&cur_pos);
тогда cur_pos.x - координата по х, а
cur_pos.y - по y
Эмуляция нажатия кнопки в текущих координатах курсора:
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); // нажали левую кнопку мыши
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); // отпустили левую кнопку мыши ( НЕ ЗАБЫВАТЬ )
Аналогично с правой кнопкой, но флаг равен:
MOUSEEVENTF_RIGHTDOWN и MOUSEEVENTF_RIGHTUP соответственно
Со средней кнопкой:
MOUSEEVENTF_MIDDLEDOWN и MOUSEEVENTF_MIDDLEUP соответственно

2-ой и 3-ий параметры функции mouse_event - координаты мыши.
При флаге MOUSEEVENTF_MOVE - смещение в пикселях от текущей точки, а если установлен флаг MOUSEEVENTF_ABSOLUTE, то координаты необходимо передать в абсолютном формате.
Перевести можно так:
cur_pos.x = cur_pos.x * (65535 / Screen->Height);
cur_pos.y = cur_pos.y * (65535 / Screen->Height);