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 maxDup
hitungan 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.exe
atau 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.