Wie kann ich in wenigen Browserfenstern gleichzeitig eine Taste drücken?

0

Ich habe meine Browser in dieser Konfiguration auf meinem Desktop geöffnet:

display diagram

Gibt es eine Möglichkeit, rote Tasten gleichzeitig zu drücken?

Ich habe eine ähnliche Frage gefunden: Kann ich Mausereignisse auf beiden Bildschirmhälften spiegeln / duplizieren?

Aber vorausgesetzt, das Skript ist zu komplex, um es zu ändern. Gibt es eine Möglichkeit, meine Klickkoordinaten einfach vom ursprünglichen Klick zu verschieben, um das gewünschte Ergebnis zu erzielen?

Ivan Kartofanov
quelle

Antworten:

2

Es gibt wahrscheinlich elegantere Möglichkeiten, dies zu tun, aber hier ist eine halbmanuelle Möglichkeit, die Sie verwenden können.

Bringen Sie zuerst Ihre Fenster in Position.

Sobald sie in Position und einsatzbereit sind, ermitteln Sie die Offsets für das Senden von sekundären Klicks an sie.

Hier ist ein Code-Snippet, das Positions-Offsets berechnet, indem Sie die Maus an die Stellen bewegen, die 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 dann die Maus zur Position im zweiten Fenster und drücken Sie F2. Der Tooltipp gibt 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 löschen oder ändern (firstX / firstY), stellen Sie sicher, dass in dem Fenster, in dem das ursprüngliche Klicken auftritt, immer F1 eingestellt ist. Setzen Sie es einfach einmal und berechnen Sie dann mit F2 die Sekundärpunkte für jedes Fenster, bis Sie alle Offsets notiert haben.

(Eine andere Möglichkeit wäre, die Fenster zu erkennen, an einen anderen Ort zu verschieben, ihre Größe zu ändern usw.) Dies ist in Bezug auf die Codierung nur der blöde / einfache Weg, und kostet jedes Mal ein wenig Einrichtungsarbeit, wenn Sie dies wünschen um es zu benutzen.)

Nachdem Sie die Fenster-Offsets erhalten haben, verwenden Sie ein zweites Stück Code (möglicherweise in einem zweiten Skript, muss es aber nicht sein), um Mausklicks zu erkennen und diese Klicks auf jedes von Ihnen definierte Fenster zu spiegeln.

Nachdem Sie Ihre Offsets in jedes der sekundären Fenster geschrieben haben, aktualisieren Sie sie im Abschnitt zur Definition der hartcodierten Offsetliste von [X, Y] Offsets. Wenn Sie mehr oder weniger als 5 zusätzliche Fenster haben, reduzieren Sie oder fügen Sie Versatzpaare unter Verwendung einer ähnlichen Notation hinzu, wobei die Versatzpaarnummer unmittelbar auf den Wortversatz folgt, d. H. offset13:=[X,Y]und aktualisieren Sie auch die maxDup entsprechend zählen, d.h. 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%
    }
}

Nachdem die Offsets festgelegt wurden, führen Sie das Skript aus, um es zu testen. Wenn Sie weniger Versätze testen möchten, kommentieren Sie zusätzliche Versatzlinien und ändern Sie maxDup entsprechend.

Etwas anderes, das Sie zur Vereinfachung des Testens möglicherweise tun möchten, ist möglicherweise auch das LButton:: Hotkey-bedingt, d. h. Verwendung #IfWinActive ahk_exe chrome.exe oder ähnliches (basierend auf Ihrem Browser) und geben Sie dies als die Zeile unmittelbar vor dem ein LButton:: Hotkey-Definitionszeile. Dies würde verhindern, dass das doppelte Klicken mit der Maus bei anderen Programmen außer Ihrem Browser verrückt wird, solange das Nicht-Browser-Fenster aktiv war, bevor Sie darauf geklickt haben.

JJohnston2
quelle
1

Mit AutoHotkey klickt das folgende Skript nacheinander auf die roten Bereiche Ihres Bildschirms, wenn Sieg + F11 wird gedrückt:

#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
davidmneedham
quelle