Wie kann ich in einigen Bildschirmfenstern gleichzeitig eine Taste drücken?

394
Ivan Kartofanov

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?

Das bereitgestellte Skript ist jedoch zu komplex, als dass ich es modifizieren könnte, wenn ich meine Klickkoordinaten einfach vom ersten Klick an verschieben kann, um das gewünschte Ergebnis zu erhalten.

0

2 Antworten auf die Frage

2
JJohnston2

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 maxDupAnzahl 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.exeoder 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.

1
davidmneedham

Mit AutoHotkey klickt das folgende Skript nacheinander auf die roten Bereiche Ihres Bildschirms, wenn Sie Win+ F11drücken:

#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