Використання AppleScript для блокування екрана


11

Мені потрібен яблучний скрипт, який блокує мій Mac так само, як натискаючи shift+ ctrl+ eject. Я спробував два різні підходи, але обидва не вдалися. Перший - це пошук в Інтернеті сценарію, який не вдався. Є лише рішення із заставки або інші програми, які я не хочу. Я просто хочу використовувати те, що я описав. Друга - сказати яблучному сценарію, щоб натиснути три клавіші, які не працювали. Якби хтось міг сказати мені, як заблокувати Mac, або як сказати яблучному скрипту, щоб натиснути три клавіші, я був би дуже радий, тому що я дуже засмучений.

Відповіді:


13

Отримання інформації з цієї відповіді та цієї відповіді:

  1. Натисніть кнопку Spotlight у верхньому правому куті екрана ( Cmd+ Space)
  2. Пошук Keychain Access. Відкрийте це
  3. Відкрити налаштування ( Cmd+ ,(кома))
  4. Перевірити Show Status in Menu Bar
  5. Натисніть кнопку Spotlight у верхньому правому куті екрана ( Cmd+ Space)
  6. Пошук Automator. Виберіть це
  7. Створити новий Service
  8. Пошук Run Applescriptпоруч із кнопками Actionsта Variables. Двічі клацніть на цьому
  9. Переконайтеся, що прапорці є Service receives no input in any application
  10. Вставте цей Applescript:

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

Збережіть цей Автоматизатор як щось подібне Lock screen(зверніть увагу: код у GIF відрізняється!)

введіть тут опис зображення


Щоб зробити ярлик:

  1. Натисніть кнопку Apple у верхньому лівому куті екрана
  2. Клацніть System Preferences
  3. Клацніть Keyboard
  4. Клацніть на Keyboard Shortcutsвкладку
  5. Клацніть Services
  6. Знайдіть назву створеної вами послуги
  7. Клацніть порожнє місце праворуч
  8. Введіть ярлик

Використовуйте ярлик у будь-якій програмі!

введіть тут опис зображення


АБО ...:

  1. Можна було купити Альфреда
  2. Ви можете використовувати Cmd+ Shift+Eject

3
Зауважимо лише: альфред та cmd + shift + eject вбивають мережу, коли вона зупиняє машину. Це дуже зручно, оскільки він просто блокує екран.
BeepDog

3
Коли я запускаю сценарій, він відкриває меню брелоків і застрягає. Коли я закриваю меню, я отримую цю помилку: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 Ви впевнені, що зробили кроки 1-4? Я також оновив код, тому спробуйте виконати кроки 1-4 :)
ᔕᖺᘎᕊ

@ ᔕᖺᘎᕊ Я отримую таку ж помилку, що і вище, "Недійсний індекс"

7

Знайшов це в іншій відповіді, але AppleScript, який просто містить такі роботи для мене.

 tell application "Finder" to sleep

1
Я поєднав цю відповідь з прийнятою відповіддю, і вона спрацювала дуже добре. Можливо, прийнята відповідь могла б включити це.
Девід Каллен

На відміну від коду у прийнятій відповіді, код цієї відповіді не потребує встановлення привілеїв для всіх програм, де ви хочете використовувати ярлик, а також не вимагає, щоб статус брелока був видно на панелі меню.
valyron

Це залежить від уподобань погода насправді замкнений. На жаль, для мене це не працює, оскільки наша організація змушує налаштування заблокувати 1 хвилину після сну
quuxman

3

macOS 10.11, El Capitan, здається, зламав ᔕᖺᘎᕊ відповідь за допомогою AppleScripts, але я виявив, що якщо я встановив Lock Screen і змусив службу Automator відкрити "Блокування екранного блоку", решта процесу працювала за призначенням (за умови, що я зателефонував службовий "екран блокування", а не "Блокування екрана": видимо, пробіли у назві файлу порушують комбінацію клавіш для багатьох користувачів macOS).

Див. Ярлик по екрану блокування в Mac OS X для ілюстрованих покрокових інструкцій.


3

У мене є простий один вкладиш для цього. Він використовує системні події для надсилання комбінації клавіш за замовчуванням для команди Lock Screen і працює у всіх версіях OSX від High Sierra (10.13) далі. Навіть Мохаве! Хоча в нових версіях OSX буде запропоновано додаткові дозволи безпеки для додатка

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

1
Це запитання було задано 21 червня 14 року, і ваша відповідь не стосується версій ОС X, які працювали на той час. Будь ласка, відредагуйте свою відповідь, щоб включити відповідний контекст того, у яких версіях macOS це працює.
user3439894

1
Він працює у всіх версіях OSX. включаючи Mojave
користувач1270949

Це не комбінація клавіатур за замовчуванням у всіх версіях OS X, і фактично він не працює в жодній версії OS X і був введений лише в одній з версій macOS.
користувач3439894

1
Подивіться, я просто намагаюся допомогти та надати відповідь, яка працювала на мене. Вам це не подобається? Видаліть його. Мені було менше байдуже
користувач1270949

2
Працює як шарм (принаймні це робить для мене на Мохаве). Не впевнений, чому цей інший коментатор каже, що це не працює. Це просте і чисте рішення. Дякуємо, що поділилися цим.
ВВП2

2

Я використовую макрос, щоб прийняти ярлик Command-L. Нещодавно перейшов з Windows на Mac, важливим був простий спосіб заблокувати екран. У Windows потрібно просто натиснути клавішу Windows і L, і, вуаля, заблокувати.

Використовуючи клавіатуру Maestro , я створив макрос для ярлика Command-L, який по суті є однаковим (порівнюючи клавішу Command з клавішею Windows). Ярлик запускає функцію "Вікно входу", яка блокує екран. Легкий горошок, принаймні мені.

(У клавіатурі Maestro функція "Вікно входу" знаходиться в розділі Дії> Керування системою.)


1

Для High Sierra (10.13) прийнята відповідь не працює, оскільки Keychain Access не має Check Show Status in Menu Barможливості. Але, грунтуючись на безсоромному розкраданні джерела Lockscreen App (як згадував @Alice Purcell), я виявив це чудове вирішення сценарію графічного інтерфейсу:

activate application "SystemUIServer"
tell application "System Events"
    tell process "SystemUIServer" to keystroke "q" using {command down, control down}
end tell
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.