Bagaimana saya bisa menekan tombol di beberapa jendela browser di layar secara bersamaan?

0

Browser saya dibuka di konfigurasi ini di desktop saya:

diagram tampilan

Apakah ada cara untuk menekan tombol merah secara bersamaan?

Saya menemukan pertanyaan serupa: Bisakah saya mirror / menduplikasi acara mouse di kedua bagian layar saya?

Tetapi skrip yang disediakan terlalu rumit untuk saya modifikasi, jika ada cara untuk mengimbangi koordinat klik saya dari klik awal untuk mendapatkan hasil yang diinginkan?

Ivan Kartofanov
sumber

Jawaban:

2

Mungkin ada cara yang lebih elegan untuk melakukan ini, tetapi inilah cara semi-manual yang bisa Anda gunakan.

Pertama, siapkan jendela Anda.

Setelah mereka berada di posisi dan siap digunakan, cari tahu apa yang akan offset untuk mengirim klik sekunder kepada mereka.

Berikut ini cuplikan kode yang akan menghitung offset posisi dengan menggerakkan mouse Anda ke lokasi yang ingin Anda "ukur" dan menekan F1 dan 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

Dalam kasus Anda dengan 5 jendela tambahan, buka posisi yang ingin Anda selaraskan di jendela pertama dan tekan F1, lalu gerakkan mouse ke posisi di jendela kedua dan tekan F2. Tooltip akan memberi tahu Anda perbedaan antara keduanya sebagai offset [X, Y]. Tuliskan lalu pergi ke jendela berikutnya dan tekan F2 lagi. Jika Anda secara tidak sengaja menghapus atau mengubah F1 (firstX / firstY), pastikan dan selalu atur F1 pada jendela di mana klik asli akan terjadi. Cukup atur satu kali, lalu hitung poin sekunder untuk setiap jendela menggunakan F2 sampai Anda memiliki semua offset dituliskan.

(Cara alternatif untuk melakukan ini adalah mendeteksi jendela, memindahkannya ke lokasi, mengubah ukurannya, dll. Ini hanya cara bodoh / mudah sejauh menyangkut pengkodean, dengan biaya sedikit pengaturan yang berfungsi setiap kali Anda inginkan untuk menggunakannya.)

Setelah Anda mengimbangi jendela, gunakan bit kode kedua (mungkin dalam skrip kedua, tetapi tidak harus), untuk mendeteksi klik mouse dan mencerminkan klik tersebut ke setiap jendela yang telah Anda tetapkan.

Setelah menuliskan offset Anda ke masing-masing jendela sekunder, perbarui di bagian definisi daftar offset offset kode [X, Y]. Jika Anda memiliki lebih atau kurang dari 5 jendela ekstra, kurangi atau tambahkan pasangan offset menggunakan notasi yang sama dengan nomor pasangan offset segera setelah kata offset, yaitu offset13:=[X,Y], dan juga perbarui maxDuphitungan sesuai, yaitu,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%
    }
}

Setelah offset ditetapkan, jalankan skrip untuk mengujinya. Jika Anda ingin menguji lebih sedikit offset, beri komentar tambahan garis offset dan ubah maxDup agar sesuai.

Hal lain yang mungkin ingin Anda lakukan untuk pengujian yang lebih mudah mungkin adalah dengan membuat tombol LButton::pintas bersyarat, yaitu, menggunakan #IfWinActive ahk_exe chrome.exeatau serupa (berdasarkan browser Anda) dan menempatkannya sebagai garis segera sebelum LButton::garis definisi tombol pintas. Itu akan menjaga klik mouse duplikat menjadi gila pada program lain selain browser Anda, selama jendela non-browser aktif sebelum Anda mengkliknya.

JJohnston2
sumber
1

Dengan AutoHotkey, skrip berikut akan mengeklik area merah layar Anda satu demi satu ketika Win+ F11ditekan:

#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
sumber