Es gibt wahrscheinlich elegantere Möglichkeiten, dies zu tun, aber es gibt eine halb manuelle Anleitung, die Sie verwenden könnten.
Zuerst bringen Sie Ihre Fenster in Position.
Sobald sie sich in Position befinden und einsatzbereit sind, können Sie herausfinden, welche Offsets für das Senden von Sekundärklicks erforderlich sind.
Hier ist ein Codeausschnitt, der Positionsversätze berechnet, indem Sie Ihre Maus an die Positionen bewegen, an denen Sie "messen" möchten, und F1 und F2 drücken.
#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
Gehen Sie in Ihrem Fall mit 5 zusätzlichen Fenstern zu der Position, die Sie im ersten Fenster synchronisieren möchten, und drücken Sie F1, bewegen Sie die Maus an die Position im zweiten Fenster und drücken Sie F2. Der Tooltip zeigt Ihnen den Unterschied zwischen den beiden als [X, Y] -Versatz an. Schreiben Sie es auf, gehen Sie zum nächsten Fenster und drücken Sie erneut F2. Wenn Sie versehentlich F1 (firstX / firstY) gelöscht oder geändert haben, stellen Sie sicher, dass in dem Fenster, in dem der Originalklick erfolgt, immer F1 eingestellt ist. Legen Sie es einfach einmal fest und berechnen Sie dann mit F2 die Sekundärpunkte für jedes Fenster, bis alle Offsets notiert sind.
(Eine andere Möglichkeit wäre, die Fenster zu erkennen, sie in Position zu bringen, ihre Größe zu ändern usw.) Dies ist nur die dumme / einfache Möglichkeit, was die Codierung angeht, was jedoch jedes Mal, wenn Sie möchten, ein wenig Installationsarbeit kostet um es zu benutzen.)
Nachdem Sie die Fenster-Offsets erstellt haben, verwenden Sie ein zweites Bit Code (möglicherweise in einem zweiten Skript, das muss aber nicht sein), um Mausklicks zu erkennen und diese Klicks auf jedes definierte Fenster zu spiegeln.
Nachdem Sie die Offsets für jedes der sekundären Fenster notiert haben, aktualisieren Sie sie im Abschnitt Definitionsbereich für hartcodierte Offsets der [X, Y] Offsets. Wenn Sie mehr oder weniger als 5 zusätzliche Fenster haben, reduzieren oder fügen Sie Versatzpaare in ähnlicher Notation hinzu, wobei die Versatzpaarnummer unmittelbar auf den Wortversatz folgt, dh offset13:=[X,Y]
, und aktualisieren Sie auch die maxDup
Anzahl entsprechend.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% } }
Führen Sie nach dem Einstellen der Offsets das Skript aus, um es zu testen. Wenn Sie weniger Offsets testen möchten, kommentieren Sie zusätzliche Versatzzeilen aus und ändern Sie maxDup entsprechend.
Etwas anderes, das Sie für ein einfacheres Testen vielleicht tun möchten, könnte auch darin bestehen, den LButton::
Hotkey bedingt zu machen, dh ( #IfWinActive ahk_exe chrome.exe
oder abhängig von Ihrem Browser) zu verwenden und dies als die Zeile unmittelbar vor der LButton::
Hotkey-Definitionszeile zu setzen. Dies würde verhindern, dass doppelte Mausklicks in anderen Programmen außer Ihrem Browser verrückt werden, solange das Nicht-Browser-Fenster aktiv war, bevor Sie darauf geklickt haben.