1 (изменено: Simachev.one, 2021-05-19 15:40:16)

Тема: AHK: Некорректное смещение курсора при DllCall

Доброго времени суток.
При использовании последовательности команд
DllCall("mouse_event", uint, 1, int, x, int, y, uint, 0, int, 0) и
DllCall("mouse_event", uint, 1, int, -x, int, -y, uint, 0, int, 0)
Курсор возвращается не в исходное положение, а со смещением.
Кто может подсказать, где искать решение проблемы?
Заранее признателен за ответ.

2 (изменено: Simachev.one, 2021-05-19 15:55:10)

Re: AHK: Некорректное смещение курсора при DllCall

Причем смещение появляется именно при первом вызове функции.
Если сделать цикл через Loop, то все последующие "движения" работают как и должны.

3

Re: AHK: Некорректное смещение курсора при DllCall

Почему такое происходит, должна объяснять следующая цитата из статьи о mouse_event function:

If the MOUSEEVENTF_ABSOLUTE value is not specified, dx and dy specify relative motions from when the last mouse event was generated (the last reported position).

Можно использовать абсолютные координаты, а не относительные.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

4 (изменено: __Михаил__, 2021-05-19 21:27:32)

Re: AHK: Некорректное смещение курсора при DllCall

Тут нашёл инфу об этом.

Возвращает обратно в место, где был курсор при нажатии на F2:

F2:: 
CoordMode, Mouse, Screen
MouseGetPos, X, Y
Sleep, 500
X := X*65535/A_ScreenWidth
Y := Y*65535/A_ScreenHeight
DllCall("mouse_event", uint,0x8001, int, X, int, Y, uint,0, int,0 )
Return
Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

5

Re: AHK: Некорректное смещение курсора при DllCall

__Михаил__, а тут не нашли?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: Некорректное смещение курсора при DllCall

Не обновил страницу когда решил написать.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101