1

Тема: AHK: Считать движения мыши от текущего положения курсора

Доброго времени суток. Подскажите как считать движения мыши от текущего положения курсора.
Я знаю что можно считать с помощью команды "MouseGetPos",но эта  команда считывает положение курсора от верхнего левого угла экрана. Хотелось бы узнать как это сделать от текущего положения курсора "R". Вот код который я накидал но он работает неправильно, считывает от верхнего левого угла экрана.

F7::
  MouseGetPos, pos1, pos2
 FileAppend,% "Mousemove," pos1 "," pos2 ",0 ,R `n",555.ini
FileAppend,% "Sleep, 60 `n",555.ini
  Return
OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

2 (изменено: Irbis, 2014-09-15 21:20:42)

Re: AHK: Считать движения мыши от текущего положения курсора

Первое нажатие хоткея определяет "точку отсчёта"

F7::
   MouseGetPos, pos1, pos2
   if !x0
      x0:= pos1, y0 := pos2
   Else
   {
      FileAppend,% "Mousemove," pos1 - x0 "," pos2 -y0 ",0 ,R `n",555.ini
      FileAppend,% "Sleep, 60 `n",555.ini
   }
Return

3

Re: AHK: Считать движения мыши от текущего положения курсора

Хотелось бы узнать как это сделать от текущего положения курсора

Запоминать текущее положение курсора, каждый следующий шаг вычислять разницу между текущим и предыдущим положением.

4

Re: AHK: Считать движения мыши от текущего положения курсора

Да, действительно, после перемещения текущие координаты надо принять за новую точку отсчёта.

F7::
   MouseGetPos, pos1, pos2
   if !x0
      x0:= pos1, y0 := pos2
   Else
   {
      FileAppend,% "Mousemove," pos1 - x0 "," pos2 -y0 ",0 ,R `n",555.ini
      FileAppend,% "Sleep, 60 `n",555.ini
      x0:= pos1, y0 := pos2
   }
Return

5 (изменено: Ядрён, 2014-09-16 01:19:26)

Re: AHK: Считать движения мыши от текущего положения курсора

Irbis пишет:

Да, действительно, после перемещения текущие координаты надо принять за новую точку отсчёта.

F7::
   MouseGetPos, pos1, pos2
   if !x0
      x0:= pos1, y0 := pos2
   Else
   {
      FileAppend,% "Mousemove," pos1 - x0 "," pos2 -y0 ",0 ,R `n",555.ini
      FileAppend,% "Sleep, 60 `n",555.ini
      x0:= pos1, y0 := pos2
   }
Return

Спасибо большое всё работает . А не поможете разобраться как определить задержку между движениями мыши, что бы писалась в файл  вместо "Sleep, 60".

OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

6

Re: AHK: Считать движения мыши от текущего положения курсора

Если другие горячие клавиши не используются между нажатиями F7, то:

FileAppend,% "Sleep, " . A_TimeSincePriorHotkey . "`n",555.ini

7

Re: AHK: Считать движения мыши от текущего положения курсора

Большое спасибо всё работает.

OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

8

Re: AHK: Считать движения мыши от текущего положения курсора

Подскажите пожалуйста как поместить значения из "ListBox" в цикл. Код приведённый ниже не работает .

gui, font, cBlue W80 H80 s18
Gui, Add, ListBox, x12 y10 w490 h680 Multi  vDllCall3 gMySubroutine ,
Gui, Show,
return

*~F7::
Gui Submit, NoHide
   MouseGetPos, pos1, pos2
    if !x0
      x0:= - pos1, y0 := - pos2
   Else
   {
   GuiControl,, DllCall3, % ""- pos1 -x0 ","- pos2 -y0 "," . A_TimeSincePriorHotkey . "`n" 
   x0:= - pos1, y0 := - pos2
   }
Return

*~lbutton::
while GetKeyState("LButton","P")
{
DllCall("mouse_event",uint,1,int,Arr[A_Index*3-1],int,Arr[A_Index*2],uint,0,int,0)
DllCall("Sleep", UInt,Arr[A_Index*3])
}
Return

MySubroutine:
Gui Submit, NoHide
Arr := DllCall3
Return
GuiClose:
ExitApp
OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).