Como posso pressionar um botão em poucas janelas do navegador na tela simultaneamente?

0

Eu tenho meus navegadores abertos nesta configuração na minha área de trabalho:

Existeumamaneiradepressionarosbotõesvermelhossimultaneamente?

Euencontreiumaperguntasemelhante: Posso espelhar / duplicar eventos do mouse nas duas metades da minha tela?

Mas o script fornecido é muito complexo para eu modificar, se houver uma maneira de simplesmente compensar minhas coordenadas de clique do clique inicial para obter o resultado desejável?

    
por Ivan Kartofanov 23.01.2018 / 11:53

2 respostas

2

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.

    
por 24.01.2018 / 07:16
1

Com o AutoHotkey, o seguinte script irá clicar nas áreas vermelhas da sua tela uma após a outra quando Win + F11 for pressionado:

#F11::
;Clicks the X, Y pixel with a 10 ms delay between each click
Click 427, 289
Click 1049, 289
Click 1675, 289
Click 427, 805
Click 1049, 805
Click 1675, 805
Return
    
por 23.01.2018 / 17:00