Возможно, есть более элегантные способы сделать это, но вот полуручный способ, которым вы могли бы воспользоваться.
Во-первых, установите ваши окна на место.
Как только они окажутся на месте и будут готовы к использованию, выясните, какие будут смещения для отправки им вторичных кликов.
Вот фрагмент кода, который вычислит смещение положения, переместив вашу мышь в места, которые вы хотите «измерить» и нажав 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::
условную клавишу горячей клавиши условной, то есть использовать #IfWinActive ahk_exe chrome.exe
или аналогичную (в зависимости от вашего браузера) и поместить ее в качестве строки, непосредственно предшествующей LButton::
строке определения горячей клавиши. Это предотвратит сумасшедшие щелчки мыши на других программах, кроме вашего браузера, если окно, не являющееся браузером, было активным до того, как вы нажали на него.