Как можно одновременно нажать кнопку в нескольких окнах браузера?

370
Ivan Kartofanov

У меня открыты браузеры в этой конфигурации на рабочем столе:

display diagram

Есть ли способ одновременно нажимать красные кнопки?

Я нашел похожий вопрос: могу ли я отражать / дублировать события мыши на обеих половинах экрана?

Но предоставленный скрипт слишком сложен для меня, чтобы изменить его, если есть способ просто сместить мои координаты клика от первоначального клика, чтобы получить желаемый результат?

0

2 ответа на вопрос

2
JJohnston2

Возможно, есть более элегантные способы сделать это, но вот полуручный способ, которым вы могли бы воспользоваться.

Во-первых, установите ваши окна на место.

Как только они окажутся на месте и будут готовы к использованию, выясните, какие будут смещения для отправки им вторичных кликов.

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

1
davidmneedham

С AutoHotkey следующий скрипт будет щелкать красные области вашего экрана один за другим, когда нажата Win+ F11:

#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