Verwenden von AppleScript zum Sperren des Bildschirms

11

Ich benötige ein Applescript, das meinen Mac auf die gleiche Weise sperrt, wie das Drücken von shift+ ctrl+ eject. Ich habe zwei verschiedene Ansätze ausprobiert, aber beide sind fehlgeschlagen. Der erste bestand darin, im Internet nach einem Skript zu suchen, das fehlgeschlagen ist. Es gibt nur Lösungen mit Bildschirmschoner oder anderen Anwendungen, die ich nicht möchte. Ich möchte nur das verwenden, was ich beschrieben habe. Die zweite bestand darin, Applescript anzuweisen, die drei Tasten zu drücken, was nicht funktionierte. Wenn mir jemand sagen könnte, wie ich meinen Mac sperren oder wie ich Applescript anweisen soll, drei Tasten zu drücken, wäre ich wirklich glücklich, weil ich irgendwie frustriert bin.

Lavaking
quelle

Antworten:

13

Informationen aus dieser Antwort und dieser Antwort erhalten:

  1. Drücken Sie die Spotlight-Taste oben rechts auf dem Bildschirm ( Cmd+ Space).
  2. Suche Keychain Access. Öffne das
  3. Offene Einstellungen ( Cmd+ ,(Komma))
  4. Prüfen Show Status in Menu Bar
  5. Drücken Sie die Spotlight-Taste oben rechts auf dem Bildschirm ( Cmd+ Space).
  6. Suche Automator. Wählen Sie dies aus
  7. Erstelle neu Service
  8. Suchen Sie Run Applescriptneben den Schaltflächen Actionsund Variables. Doppelklicken Sie darauf
  9. Stellen Sie sicher, dass die Kontrollkästchen aktiviert sind Service receives no input in any application
  10. Fügen Sie dieses Applescript ein:

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

Speichern Sie diesen Automator als etwas wie Lock screen(Hinweis: Code in GIF ist anders!)

Geben Sie hier die Bildbeschreibung ein


So erstellen Sie eine Verknüpfung:

  1. Drücken Sie die Apple-Taste oben links auf dem Bildschirm
  2. Klicken System Preferences
  3. Klicken Keyboard
  4. Klicken Sie auf die Keyboard ShortcutsRegisterkarte
  5. Klicken Services
  6. Suchen Sie den Namen des Dienstes, den Sie gerade erstellt haben
  7. Klicken Sie auf die Leerstelle rechts
  8. Geben Sie Ihre Verknüpfung ein

Verwenden Sie Ihre Verknüpfung in jeder Anwendung!

Geben Sie hier die Bildbeschreibung ein


ODER...:

  1. Du könntest Alfred kaufen
  2. Sie könnten Cmd+ Shift+ verwendenEject
ᔕᖺᘎᕊ
quelle
3
Nur zur Anmerkung: Alfred und der Befehl cmd + shift + eject beenden das Netzwerk, wenn der Computer angehalten wird. Dies ist sehr praktisch, da es nur den Bildschirm sperrt.
BeepDog
3
Wenn ich das Skript ausführe, öffnet es das Schlüsselbundmenü und bleibt hängen. Wenn ich das Menü schließe, erhalte ich folgende Fehlermeldung: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 Sind Sie sicher, dass Sie die Schritte 1 bis 4 ausgeführt haben? Ich habe auch den Code aktualisiert, also versuchen Sie das, nachdem Sie die Schritte 1 bis 4 ausgeführt haben :)
ᔕᖺᘎᕊ
@ ᔕᖺᘎᕊ Ich erhalte den gleichen Fehler wie oben, "Ungültiger Index"
7

Fand dies auf einer anderen Antwort, aber ein AppleScript, das einfach die folgenden enthält, funktioniert für mich.

 tell application "Finder" to sleep
Alistair McMillan
quelle
1
Ich habe diese Antwort mit der akzeptierten Antwort kombiniert und es hat sehr gut funktioniert. Vielleicht könnte die akzeptierte Antwort dies beinhalten.
David Cullen
Im Gegensatz zum Code in der akzeptierten Antwort erfordert der Code dieser Antwort keine Einstellungsberechtigungen für alle Apps, in denen Sie Ihre Verknüpfung verwenden möchten, und erfordert auch nicht, dass der Schlüsselbundstatus in der Menüleiste angezeigt wird.
Valyron
Es hängt von den Vorlieben ab, ob der Wetterschlaf tatsächlich gesperrt ist. Leider funktioniert dies nicht für mich, da unsere Organisation die Einstellung zwingt, 1 Minute nach dem Schlafengehen zu sperren
Quuxman
3

macOS 10.11, El Capitan, scheint die Antwort von Apple mit AppleScripts gebrochen zu haben , aber ich stellte fest, dass der Rest des Prozesses wie beabsichtigt funktionierte , sofern ich Lock Screen installierte und meinen Automator Service das "Lock Screen Bundle" öffnen ließ (vorausgesetzt, ich rief an der Dienst "Sperrbildschirm", nicht "Sperrbildschirm": Anscheinend brechen Leerzeichen im Dateinamen die Tastenkombination für viele MacOS-Benutzer).

Siehe Bildschirm sperren Verknüpfung auf Mac OS X für eine illustrierte Schritt- für -Schritt - Anleitung.

Alice Purcell
quelle
3

Ich habe einen einfachen Einzeiler dafür. Es verwendet Systemereignisse, um die Standardtastenkombination für den Befehl "Bildschirm sperren" zu senden, und funktioniert in allen OSX-Versionen ab High Sierra (10.13). Sogar Mojave! In den neueren OSX-Versionen werden jedoch zusätzliche Sicherheitsberechtigungen für die App angefordert

tell application "System Events" to keystroke "q" using {control down, command down}
user1270949
quelle
1
Diese Frage wurde am 21. Juni 14 gestellt und Ihre Antwort gilt nicht für die Versionen von OS X, die zu diesem Zeitpunkt ausgeführt werden. Bitte bearbeiten Sie Ihre Antwort, um den relevanten Kontext der Versionen von macOS
einzuschließen,
1
Es funktioniert in allen Versionen von OSX. einschließlich Mojave
user1270949
Es ist keine Standardtastenkürzel in allen Versionen von OS X, und tatsächlich funktioniert es unter keiner Version von OS X und wurde nur in einer der Versionen von macOS eingeführt.
user3439894
1
Schau, ich versuche nur zu helfen und eine Antwort zu geben, die für mich funktioniert hat. Magst du es nicht? Lösche es. Es könnte mich nicht weniger
interessieren
2
Funktioniert wie ein Zauber (zumindest für mich auf Mojave). Ich bin mir nicht sicher, warum dieser andere Kommentator sagt, dass es nicht funktioniert. Es ist eine einfache und saubere Lösung. Danke, dass du es geteilt hast.
GDP2
2

Ich benutze ein Makro, um die Verknüpfung Befehl-L zu akzeptieren. Nachdem ich kürzlich von Windows auf Mac umgestellt habe, war es wichtig, meinen Bildschirm auf einfache Weise zu sperren. In Windows muss man nur die Windows-Taste und L drücken und voila sperren.

Mit Keyboard Maestro habe ich ein Makro für die Verknüpfung Command-L erstellt, das im Wesentlichen identisch ist (Vergleich der Befehlstaste mit der Windows-Taste). Die Verknüpfung löst die Funktion "Anmeldefenster" aus, die den Bildschirm sperrt. Leicht peasy, zumindest für mich.

(In Keyboard Maestro befindet sich die Funktion "Anmeldefenster" unter Aktionen> Systemsteuerung.)

Bifjamod
quelle
1

Für High Sierra (10.13) funktioniert die akzeptierte Antwort nicht, da der Schlüsselbundzugriff keine Check Show Status in Menu BarOption hat. Aber basierend auf dem schamlosen Plündern der Quelle der Lockscreen-App (wie von @Alice Purcell erwähnt) habe ich diese raffinierte GUI-Scripting-Problemumgehung entdeckt:

activate application "SystemUIServer"
tell application "System Events"
    tell process "SystemUIServer" to keystroke "q" using {command down, control down}
end tell
ijoseph
quelle