Existem maneiras mais elegantes de fazer isso, mas aqui está uma maneira semi-manual que você pode usar.
Primeiro, coloque suas janelas na posição.
Quando estiverem em posição e prontos para uso, descubra quais serão os deslocamentos para enviar cliques secundários para eles.
Aqui está um trecho de código que irá calcular deslocamentos de posição, movendo o mouse para os locais que você quer "medir" e pressionando F1 e 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
No seu caso com 5 janelas extras, vá para a posição que você deseja sincronizar na primeira janela e aperte F1, então mova o mouse para a posição na segunda janela e aperte F2. A dica de ferramenta informará a diferença entre os dois como um deslocamento [X, Y]. Anote então vá para a próxima janela e aperte F2 novamente. Se você limpar ou alterar acidentalmente F1 (firstX / firstY), certifique-se de sempre definir F1 na janela onde o clique original ocorrerá. Basta configurá-lo uma vez e, em seguida, calcular os pontos secundários de cada janela usando F2 até que todos os deslocamentos sejam anotados.
(Formas alternativas de fazer isso seria detectar as janelas, movê-las para o local, redimensioná-las etc. Esta é apenas a maneira estúpida / fácil no que diz respeito à codificação, ao custo de um pequeno trabalho de configuração cada vez que você quiser usá-lo.)
Depois de ter os deslocamentos da janela, use um segundo pedaço de código (talvez em um segundo script, mas não precise ser), para detectar cliques do mouse e espelhar esses cliques para cada janela que você definiu. / p>
Depois de anotar seus offsets em cada uma das janelas secundárias, atualize-os na seção de definição de lista de deslocamento codificada dos deslocamentos [X, Y]. Se você tiver mais ou menos de cinco janelas extras, reduza ou adicione pares de deslocamento usando notação semelhante com o número do par de deslocamento imediatamente após o deslocamento da palavra, ou seja, offset13:=[X,Y]
e também atualize a maxDup
de acordo, ou seja, 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%
}
}
Depois que as compensações estiverem definidas, execute o script para testá-lo. Se você quiser testar menos offsets, comente linhas de offset adicionais e mude o maxDup para combinar.
Outra coisa que você pode querer fazer para facilitar o teste também pode ser tornar a condicional LButton::
hotkey, ou seja, usar #IfWinActive ahk_exe chrome.exe
ou similar (com base no seu navegador) e colocar isso como a linha imediatamente anterior à LButton::
linha de definição de teclas de atalho. Isso evitaria que o clique duplicado do mouse enlouqueça em outros programas além do navegador, desde que a janela que não esteja no navegador esteja ativa antes de você clicar nela.