Apakah Enter
pilihan didasarkan pada dialog? Jika demikian maka itu tidak akan dikirim sebagai bagian dari otomatisasi.
Saya percaya kode berikut ini harus menghasilkan keylog yang terdaftar, tetapi tidak diuji ...
^#Left::
SendInput ^!{Tab}
SendInput {Enter} ; use only if needed
Return
^#Right::
SendInput ^!+{Tab}
SendInput {Enter}
Return
Lihat di file bantuan untuk Daftar Kunci dan daftar pengubah
^ = Control
! = Alt
# = Win
+ = Shift
Juga, jika ini adalah fitur khusus Windows 10 baru maka tombol mungkin tidak berfungsi persis seperti yang diinginkan dan Anda mungkin perlu menggunakan AltTab
dan ShiftAltTab
dengan pengubah tombol kontrol. Pada versi windows sebelumnya, kombinasi ini dapat memiliki perilaku khusus sehingga ada kasus khusus (lihat AltTab
di file bantuan).
Anda juga dapat mencoba penekanan tombol secara manual untuk melihat apakah ia melakukan seperti yang dilakukan gesekan. Jika mencobanya secara manual berfungsi, maka penekanan tombol AutoHotkey harus bekerja tanpa perlu menggunakan sesuatu yang istimewa. Yaitu, coba tekan Ctrl + Alt + Tab (bawah, atas) dan kemudian Enter (bawah, atas), atau menekan Shift + Ctrl + Alt + Tab (bawah, atas) dan kemudian Enter (bawah, atas). Itulah yang ditunjukkan oleh keystroke log dengan d
dan u
karakter.
SUNTING...
Berdasarkan posting tindak lanjut berikutnya, saya melihat mengapa kode di atas secara fungsional mundur (saya tidak sepenuhnya memahami pertanyaan pada awalnya, tetapi saya akan meninggalkan posting asli saya di atas apa adanya).
Dalam menjawab pertanyaan "metode yang lebih baik", kode yang diposting sudah tampak hebat dan sangat mudah (tidak ada alasan untuk mengubahnya benar-benar) - dua perbedaan gaya yang mungkin di bawah ini hanya untuk menunjukkan beberapa variasi yang mungkin dalam menjawab pertanyaan- -kode yang mungkin 'bersih' menggunakan variabel hotkey bawaan dan operator ternary.
Pertama, variabel hotkey A_ThisHotkey
dan A_PriorHotkey
dapat digunakan untuk mendeteksi hotkey saat ini dan hotkey terakhir yang dipecat. Ini memungkinkan Anda menyederhanakan penugasan variabel dengan menyingkirkan variabel yang digunakan untuk melacak yang dipicu yang terakhir. Definisi hotkey masih harus ada di tempat sehingga acara tersebut diambil dan dibuang, tetapi mereka tidak perlu melakukan apa pun sekarang selain kembali.
^!Tab::return
^!+Tab::return
$Enter::
if (A_PriorHotkey="^!Tab") {
SendInput ^#{Left}
} else if (A_PriorHotkey="^!+Tab") {
SendInput ^#{Right}
} else
SendInput {Enter}
return
Anda dapat melihat bagaimana ini terlihat sedikit lebih sederhana dan kurang tersebar.
Variasi terakhir adalah menggunakan operator ternary sekarang untuk secara efektif melakukan pernyataan If-Then-Else dan menggabungkan semuanya menjadi satu pernyataan:
^!Tab::Return
^!+Tab::Return
$Enter::SendInput % (A_PriorHotkey="^!Tab") ? "^#{Left}" : (A_PriorHotkey="^!+Tab") ? "^#{Right}" : "{Enter}" ; Final 'Else' Statement
Ke tiga baris kode, tetapi bukan yang paling mudah dibaca.
Memanfaatkan satu tunjangan AutoHotkey akhir, garis tunggal dapat dipisah menggunakan operator kelanjutan otomatis ketika garis dimulai dengan koma, titik dua atau periode untuk merangkai hal-hal bersama-sama ... ini memungkinkan penggunaan jeda baris logis, dan membuat cukup jelas struktur If-Then-Else dengan ?
operator ternary , tanpa memiliki banyak pernyataan If-Then-Else-Else-Else.
Kode akhir akan terlihat seperti ini ...
^!Tab::return
^!+Tab::return
$Enter::SendInput % (A_PriorHotkey="^!Tab") ? "^#{Left}"
: (A_PriorHotkey="^!+Tab") ? "^#{Right}"
: "{Enter}" ; Final 'Else' Statement
Atau dengan spasi alternatif pada 'Lain' terakhir untuk menjaga semua argumen Kirim disejajarkan secara vertikal ...
^!Tab::return
^!+Tab::return
$Enter::SendInput % (A_PriorHotkey="^!Tab") ? "^#{Left}"
: (A_PriorHotkey="^!+Tab") ? "^#{Right}"
: "{Enter}" ; Final 'Else' Statement
Satu catatan akhir - saya tidak bisa benar-benar menguji kutipan kode di atas, meskipun saya percaya mereka harus bekerja sebagaimana tercantum. Semua itu hanyalah pembaruan gaya seperti yang disebutkan (yaitu, pembaruan untuk kode tindak lanjut yang sudah diposting oleh pengguna yang mengeposkan pertanyaan asli) - pada akhirnya tidak ada perbedaan fungsional, hanya beberapa fitur yang ditawarkan AutoHotkey jika Anda terus mengembangkan.
^#Left
atau^#Right
.