Возможно, есть более элегантные способы сделать это, но вот полуручный способ, которым вы могли бы воспользоваться.
Во-первых, установите ваши окна на место.
Как только они будут в положении и готовы к использованию, выясните, какие будут смещения для отправки им вторичных кликов.
Вот фрагмент кода, который вычислит смещение положения, переместив вашу мышь в места, которые вы хотите "измерить" и нажав F1 и F2.
#Persistent
#SingleInstance, Force
#NoEnv
F1::
CoordMode, Mouse, Screen
MouseGetPos, firstX, firstY
Gosub ShowTooltip
Return
F2::
CoordMode, Mouse, Screen
MouseGetPos, secondX, secondY
Gosub ShowTooltip
Return
F3::ToolTip ; Clear setup tooltip
ShowToolTip:
ToolTip % msg:="1stX, 1stY `t= " firstX ", " firstY "`t`t (set with F1, where you will click in operation)`n"
. "2ndX, 2ndY `t= " secondX ", " secondY "`t`t (set with F2, where you want it mirrored to)`n"
. "offsetN[X, Y] `t= [" secondX-firstX ", " secondY-firstY "] `t`t hard code this once windows are in position"
Return
В вашем случае с 5 дополнительными окнами перейдите в позицию, которую вы хотите синхронизировать в первом окне, и нажмите F1, затем переместите мышь в позицию во втором окне и нажмите F2. Подсказка покажет разницу между ними в виде смещения [X, Y]. Запишите его, затем перейдите к следующему окну и снова нажмите F2. Если вы случайно очистили или изменили F1 (firstX/firstY), убедитесь и всегда устанавливайте F1 в окне, где будет происходить первоначальный щелчок. Просто установите его один раз, затем вычислите вторичные точки для каждого окна, используя F2, пока не будут записаны все смещения.
(Альтернативные способы сделать это - обнаружить окна, переместить их в нужное место, изменить их размер и т.д. Это просто тупой / простой способ в том, что касается кодирования, за счет небольшой работы по настройке каждый раз, когда вы хотите его использовать.)
После того как у вас есть смещения окна, используйте второй бит кода (возможно, во втором скрипте, но не обязательно), чтобы обнаружить щелчки мышью и отразить эти щелчки в каждом окне, которое вы определили.
После записи ваших смещений в каждое из вторичных окон обновите их в жестко закодированном разделе определения списка смещений [X, Y]. Если у вас больше или меньше 5 дополнительных окон, уменьшите или добавьте пары смещений, используя аналогичные обозначения с номером пары смещений, следующим сразу за смещением слова, т. offset13:=[X,Y]
, а также соответствующим образом обновите счетчик maxDup
, т.е. , maxDup:=13
#Persistent
#SingleInstance, Force
#NoEnv
~LButton:: ; tilde allows the LButton click to pass through and not get blocked
CoordMode, Mouse, Screen
MouseGetPos, mouseX, mouseY
dupClicks(mouseX, mouseY) ; duplicate clicks using mouse position as input
Return
dupClicks(mouseX, mouseY) {
; hard-code offsets to the windows you want to click
; there are other ways of detecting windows and clicking
; at a relative offset within each window (regardless of where it is at),
; but the original post doesn't have enough information to show something
; fancy like that
Offset1:=[300, 0]
Offset2:=[500, 0]
Offset3:=[100, 200]
Offset4:=[300, 200]
Offset5:=[500, 200]
maxDup := 5 ; set to number of extra windows defined above to be clicked
Loop, % maxDup {
x:=mouseX+offset%A_Index%[1] ; get first value of OffsetN, i.e., xOffset
y:=mouseY+offset%A_Index%[2] ; get second value of OffsetN, i.e., yOffset
Click, %x%, %y%
}
}
После того как смещения установлены, запустите скрипт, чтобы проверить его. Если вы хотите проверить меньшее количество смещений, закомментируйте дополнительные строки смещений и измените maxDup для соответствия.
Что-то еще, что вы можете захотеть сделать для более простого тестирования, может также сделать условное обозначение LButton::
hotkey, то есть использовать #IfWinActive ahk_exe chrome.exe
или аналогичный (в зависимости от вашего браузера) и поместить его в качестве строки, непосредственно предшествующей LButton::
строка определения горячей клавиши. Это предотвратит повторное нажатие мыши на других программах, кроме вашего браузера, если окно браузера не было активным до того, как вы нажали на него.