Menggunakan AppleScript untuk mengunci layar


11

Saya membutuhkan applescript yang mengunci Mac saya dengan cara yang sama dengan menekan shift+ ctrl+ eject. Saya mencoba dua pendekatan yang berbeda, tetapi keduanya gagal. Yang pertama adalah mencari skrip di internet, yang gagal. Hanya ada solusi dengan screensaver atau aplikasi lain, yang tidak saya inginkan. Saya hanya ingin menggunakan apa yang saya jelaskan. Yang kedua adalah memberi tahu applescript untuk menekan tiga kunci yang tidak berfungsi. Jika seseorang bisa memberi tahu saya cara mengunci Mac saya atau cara memberi tahu applescript untuk menekan tiga tombol, saya akan sangat senang, karena saya agak frustrasi.

Jawaban:


13

Mendapatkan informasi dari ini jawaban dan ini jawabannya:

  1. Tekan tombol Spotlight di kanan atas layar ( Cmd+ Space)
  2. Cari Keychain Access. Buka ini
  3. Buka Preferensi ( Cmd+ ,(koma))
  4. Memeriksa Show Status in Menu Bar
  5. Tekan tombol Spotlight di kanan atas layar ( Cmd+ Space)
  6. Cari Automator. Pilih ini
  7. Membuat baru Service
  8. Cari di Run Applescriptsebelah tombol Actionsdan Variables. Klik dua kali ini
  9. Pastikan kotak centangnya adalah Service receives no input in any application
  10. Rekatkan Applescript ini:

tell application "System Events" to tell process "SystemUIServer"
    tell (menu bar item 1 of menu bar 1 where description is "Keychain menu extra")
        click
        click menu item "Lock Screen" of menu 1
    end tell
end tell

Simpan Automator ini sebagai sesuatu seperti Lock screen(catatan: kode di GIF berbeda!)

masukkan deskripsi gambar di sini


Untuk membuat jalan pintas:

  1. Tekan tombol Apple di kiri atas layar
  2. Klik System Preferences
  3. Klik Keyboard
  4. Klik Keyboard Shortcutstab
  5. Klik Services
  6. Temukan nama layanan yang baru saja Anda buat
  7. Klik ruang kosong di sebelah kanan
  8. Ketikkan pintasan Anda

Gunakan pintasan Anda di aplikasi apa pun!

masukkan deskripsi gambar di sini


ATAU...:

  1. Anda bisa membeli Alfred
  2. Anda bisa menggunakan Cmd+ Shift+Eject

3
Sebagai catatan: alfred dan cmd + shift + eject membunuh jaringan ketika mesin ditangguhkan. Ini sangat berguna karena hanya mengunci layar.
BeepDog

3
Ketika saya menjalankan skrip, itu membuka menu gantungan kunci dan macet. Ketika saya menutup menu, saya mendapatkan kesalahan ini:System Events got an error: Can’t get menu 1 of menu bar item 2 of menu bar 1 of application process "SystemUIServer". Invalid index.
Macil

@ AgentME Anda yakin telah melakukan langkah 1-4? Saya juga memperbarui kode jadi coba setelah melakukan langkah 1-4 :)
ᔕᖺᘎᕊ

@ ᔕᖺᘎᕊ Saya mendapatkan kesalahan yang sama seperti di atas, "Indeks Tidak Valid"

7

Menemukan ini pada jawaban lain tetapi AppleScript yang hanya berisi karya-karya berikut untuk saya.

 tell application "Finder" to sleep

1
Saya menggabungkan jawaban ini dengan jawaban yang diterima dan itu bekerja dengan sangat baik. Mungkin jawaban yang diterima bisa memasukkan ini.
David Cullen

Berlawanan dengan kode dalam jawaban yang diterima, kode jawaban ini tidak memerlukan hak pengaturan untuk semua aplikasi tempat Anda ingin menggunakan pintasan dan juga tidak mengharuskan status gantungan kunci terlihat di bilah menu.
valyron

Itu tergantung pada preferensi cuaca yang benar-benar terkunci. Sayangnya bagi saya ini tidak berhasil karena organisasi kami memaksa pengaturan untuk mengunci 1 menit setelah tidur
quuxman

3

macOS 10.11, El Capitan, tampaknya telah melanggar jawaban ᔕᖺᘎᕊ menggunakan AppleScripts, tetapi saya menemukan bahwa jika saya memasang Lock Screen , dan membuat Layanan Automator saya membuka "Bundel Layar Kunci", sisa prosesnya berjalan seperti yang diharapkan (asalkan saya memanggil Layanan "layar kunci", bukan "Layar Kunci": tampaknya spasi dalam nama file mematahkan pintasan keyboard untuk banyak pengguna macOS).

Lihat Mengunci pintasan layar pada Mac OS X untuk panduan langkah demi langkah bergambar.


3

Saya punya satu liner sederhana untuk ini. Ia menggunakan System Events untuk mengirim kombo kunci default untuk perintah Lock Screen dan bekerja di semua versi OSX dari High Sierra (10.13) pada. Bahkan Mojave! Meskipun itu akan meminta izin Keamanan tambahan untuk Aplikasi, dalam versi OSX yang lebih baru

tell application "System Events" to keystroke "q" using {control down, command down}

1
Pertanyaan ini ditanyakan 21 Juni '14 dan jawaban Anda tidak berlaku untuk versi OS X yang berjalan saat itu. Harap edit jawaban Anda untuk memasukkan konteks yang relevan dari versi MacOS apa ini bekerja.
user3439894

1
Ini bekerja di semua versi OSX. termasuk Mojave
user1270949

Ini bukan pintasan keyboard default di semua versi OS X, dan faktanya itu tidak berfungsi pada versi OS X mana pun dan hanya diperkenalkan di salah satu versi macOS.
user3439894

1
Lihat saya hanya mencoba membantu dan memberikan jawaban yang berhasil untuk saya. Tidak suka itu Hapus. Saya tidak peduli
user1270949

2
Bekerja seperti pesona (setidaknya bagi saya di Mojave). Tidak yakin mengapa komentator lain ini mengatakan itu tidak berhasil. Ini solusi sederhana dan bersih. Terima kasih telah membagikannya.
GDP2

2

Saya menggunakan makro untuk menerima pintasan Command-L. Setelah baru-baru ini beralih dari Windows ke Mac, cara mudah untuk mengunci layar saya adalah penting. Di Windows, seseorang hanya perlu menekan tombol Windows dan L, dan, voila, terkunci.

Menggunakan Keyboard Maestro , saya membuat makro untuk pintasan Command-L, pada dasarnya sama (membandingkan tombol Command ke tombol Windows). Pintasan memicu fungsi "Login Window", yang mengunci layar. Peasy mudah, setidaknya bagi saya.

(Di Keyboard Maestro, fungsi "Jendela Masuk" berada di bawah Tindakan> Kontrol Sistem.)


1

Untuk High Sierra (10.13), jawaban yang diterima tidak berfungsi karena Akses Keychain tidak memiliki Check Show Status in Menu Baropsi. Tetapi, berdasarkan penjarahan tanpa malu-malu sumber dari Aplikasi Lockscreen (seperti yang disebutkan oleh @Alice Purcell), saya telah menemukan solusi pemecahan skrip GUI yang bagus:

activate application "SystemUIServer"
tell application "System Events"
    tell process "SystemUIServer" to keystroke "q" using {command down, control down}
end tell
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.