我如何才能同时按下屏幕上几个浏览器窗口中的按钮?

我如何才能同时按下屏幕上几个浏览器窗口中的按钮?

我在桌面上按照以下配置打开了浏览器:

显示图

有没有办法同时按下红色按钮?

我发现了类似的问题:我可以在屏幕的两半上镜像/复制鼠标事件吗?

但是提供的脚本对我来说太复杂了,无法修改,是否有办法简单地将我的点击坐标从初始点击中偏移以获得理想的结果?

答案1

可能有更优雅的方法可以做到这一点,但这里有一种您可以使用的半手动方法。

首先,将窗户放置到位。

一旦它们就位并准备使用,计算出向它们发送二次点击的偏移量。

这是一个代码片段,通过将鼠标移动到您想要“测量”的位置并按 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 个以上或少于 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::热键定义行之前的行。只要非浏览器窗口在您单击之前处于活动状态,这将防止重复鼠标单击在您的浏览器之外的其他程序上发生疯狂行为。

答案2

使用 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

相关内容