Używanie AppleScript do blokowania ekranu

11

Potrzebuję skryptu jabłkowego, który blokuje komputer Mac w taki sam sposób, jak naciśnięcie shift+ ctrl+ eject. Próbowałem dwóch różnych podejść, ale oba zakończyły się niepowodzeniem. Pierwszym było przeszukanie Internetu w poszukiwaniu skryptu, który się nie powiódł. Są tylko rozwiązania z wygaszaczem ekranu lub innymi aplikacjami, których nie chcę. Chcę tylko użyć tego, co opisałem. Drugim było powiedzenie Applecript, aby nacisnął trzy klawisze, które nie działały. Gdyby ktoś mógł mi powiedzieć, jak zablokować komputer Mac lub jak powiedzieć Applecript, aby nacisnął trzy klawisze, byłbym naprawdę szczęśliwy, ponieważ jestem trochę sfrustrowany.

Lavaking
źródło

Odpowiedzi:

13

Uzyskiwanie informacji z tej odpowiedzi i tej odpowiedzi:

  1. Naciśnij przycisk Spotlight w prawym górnym rogu ekranu ( Cmd+ Space)
  2. Szukaj Keychain Access. Otwórz to
  3. Otwórz Preferencje ( Cmd+ ,(przecinek))
  4. Czek Show Status in Menu Bar
  5. Naciśnij przycisk Spotlight w prawym górnym rogu ekranu ( Cmd+ Space)
  6. Szukaj Automator. Wybierz to
  7. Tworzyć nowe Service
  8. Wyszukaj Run Applescriptobok przycisków Actionsi Variables. Kliknij to dwukrotnie
  9. Upewnij się, że pola wyboru są Service receives no input in any application
  10. Wklej ten skrypt jabłkowy:

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

Zapisz tego Automatora jako coś takiego Lock screen(uwaga: kod w GIFie jest inny!)

wprowadź opis zdjęcia tutaj


Aby utworzyć skrót:

  1. Naciśnij przycisk Apple w lewym górnym rogu ekranu
  2. Kliknij System Preferences
  3. Kliknij Keyboard
  4. Kliknij Keyboard Shortcutszakładkę
  5. Kliknij Services
  6. Znajdź nazwę właśnie utworzonej usługi
  7. Kliknij puste miejsce po prawej stronie
  8. Wpisz swój skrót w

Użyj skrótu w dowolnej aplikacji!

wprowadź opis zdjęcia tutaj


LUB...:

  1. Możesz kupić Alfreda
  2. Możesz użyć Cmd+ Shift+Eject
ᔕᖺᘎᕊ
źródło
3
Uwaga: alfred i cmd + shift + eject zabijają sieć, gdy zawiesza maszynę. Jest to bardzo przydatne, ponieważ po prostu blokuje ekran.
BeepDog
3
Po uruchomieniu skryptu otwiera menu pęku kluczy i zacina się. Po zamknięciu menu 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.
pojawia
@AgentME czy na pewno wykonałeś kroki 1-4? Zaktualizowałem również kod, więc spróbuj to zrobić po wykonaniu kroków 1-4 :)
ᔕᖺᘎᕊ
@ ᔕᖺᘎᕊ Otrzymuję ten sam błąd, co powyżej, „Nieprawidłowy indeks”
7

Znalazłem to w innej odpowiedzi, ale AppleScript, który po prostu zawiera następujące prace dla mnie.

 tell application "Finder" to sleep
Alistair McMillan
źródło
1
Połączyłem tę odpowiedź z odpowiedzią zaakceptowaną i zadziałała bardzo dobrze. Być może przyjęta odpowiedź mogłaby to uwzględnić.
David Cullen
W przeciwieństwie do kodu w zaakceptowanej odpowiedzi, kod tej odpowiedzi nie wymaga ustawiania uprawnień dla wszystkich aplikacji, w których chcesz użyć skrótu, a także nie wymaga, aby status pęku kluczy był widoczny na pasku menu.
valyron
Zależy to od preferencji pogody, kiedy sen faktycznie się blokuje. Niestety dla mnie to nie działa, ponieważ nasza organizacja zmusza ustawienie do zamknięcia się 1 minutę po spaniu
quuxman
3

MacOS 10.11, El Capitan, wydaje się, że uszkodzony ᔕᖺᘎᕊ na odpowiedź korzystając AppleScripts, ale uważam, że jeśli zainstalowano blokady ekranu , wykonane moja Automator Obsługa otworzyć swoją „blokady ekranu Bundle”, reszta procesu pracował zgodnie z przeznaczeniem (pod warunkiem Zadzwoniłem „ekran blokady” usługi, a nie „ekran blokady”: najwyraźniej spacje w nazwie pliku łamią skrót klawiaturowy dla wielu użytkowników macOS).

Zobacz Skrót ekranu blokady w Mac OS X, aby zobaczyć ilustrowany przewodnik krok po kroku.

Alice Purcell
źródło
3

Mam na to prostą wkładkę. Używa zdarzeń systemowych, aby wysłać domyślną kombinację klawiszy dla polecenia Zablokuj ekran i działa we wszystkich wersjach OSX od High Sierra (10.13). Nawet Mojave! Chociaż będzie monitował o dodatkowe uprawnienia zabezpieczeń dla aplikacji, w nowszych wersjach OSX

tell application "System Events" to keystroke "q" using {control down, command down}
użytkownik1270949
źródło
1
To pytanie zostało zadane 21 czerwca 14 roku i twoja odpowiedź nie dotyczy wersji OS X działających w tym czasie.
Zmodyfikuj
1
Działa we wszystkich wersjach OSX. w tym Mojave
user1270949,
Nie jest to domyślny skrót klawiaturowy we wszystkich wersjach systemu OS X, a właściwie nie działa na żadnej wersji systemu OS X i został wprowadzony tylko w jednej wersji systemu macOS.
user3439894,
1
Słuchaj, staram się tylko pomóc i udzielić odpowiedzi, która zadziałała dla mnie. Nie podoba ci się Usuń to. Nic mnie to nie obchodziło
użytkownik1270949,
2
Działa jak urok (przynajmniej dla mnie na Mojave). Nie jestem pewien, dlaczego ten inny komentator twierdzi, że to nie działa. To proste i czyste rozwiązanie. Dzięki za udostępnienie.
GDP2
2

Używam makra, aby zaakceptować skrót Command-L. Po niedawnym przejściu z systemu Windows na komputer Mac ważny był łatwy sposób zablokowania ekranu. W Windows wystarczy nacisnąć klawisz Windows i L, i voila, zablokowany.

Korzystając z Keyboard Maestro , utworzyłem makro dla skrótu Command-L, w zasadzie takie samo (porównując klawisz Command z klawiszem Windows). Skrót uruchamia funkcję „Okno logowania”, która blokuje ekran. Spokojnie, przynajmniej dla mnie.

(W Keyboard Maestro funkcja „Okno logowania” znajduje się w obszarze Działania> Kontrola systemu.)

bifjamod
źródło
1

W High Sierra (10.13) zaakceptowana odpowiedź nie działa, ponieważ Dostęp do pęku kluczy nie ma Check Show Status in Menu Baropcji. Ale bazując na bezwstydnym grabieży źródła aplikacji Lockscreen (wspomnianej przez @Alice Purcell), odkryłem to sprytne obejście skryptów GUI:

activate application "SystemUIServer"
tell application "System Events"
    tell process "SystemUIServer" to keystroke "q" using {command down, control down}
end tell
ijoseph
źródło