Mit dem folgenden AppleScript-Code innerhalb einer Aktion „AppleScript ausführen“ in einem Dienst:
tell application "System Events"
set theSBounds to {{572, 64}, {332, 515}}
set position of window "Google Hangouts - myemailaddress@gmail.com" of application process "Google Chrome" to item 1 of theSBounds
set size of window "Google Hangouts - myemailaddress@gmail.com" of application process "Google Chrome" to item 2 of theSBounds
end tell
Der Dienst funktioniert nur, wenn die Anwendung, von der dieser Dienst aufgerufen wurde, zur Liste der Anwendungen unter „Zulassen, dass die folgenden Apps Ihren Computer steuern“ hinzugefügt wurde. Diese Liste finden Sie unter Systemeinstellungen → Sicherheit & Datenschutz → Eingabehilfen.
Ist es möglich, den AppleScript-Code irgendwie zu ändern, sodass nicht jede Anwendung auf dem eigenen Computer zur Liste hinzugefügt werden muss? Oder muss man statt jeder Anwendung auf dem eigenen Rechner nur noch einen Eintrag in die Liste aufnehmen?
Ich dachte, dass so etwas funktionieren könnte:
do shell script "osascript -e 'tell application \"System Events\"' -e 'set theSBounds to {{572, 64}, {332, 515}}' -e 'set position of window \"Google Hangouts - myemailaddress@gmail.com\" of application process \"Google Chrome\" to item 1 of theSBounds' -e 'set size of window \"Google Hangouts - myemailaddress@gmail.com\" of application process \"Google Chrome\" to item 2 of theSBounds' -e 'end tell'" with administrator privileges
Dieser Code erfordert jedoch auch, dass die Anwendung, von der aus der Dienst ausgeführt wird, der Barrierefreiheitsliste hinzugefügt wird.
Hinweis: Ich möchte dieses AppleScript nur als Dienst ausführen und nicht in einer von Automator erstellten Anwendung, da der Code ausgewählten Text als Eingabe erhält (systemweit).
Ich habe eine gute Lösung (dh Workaround) gefunden.
Fügen Sie den Codeblock „Systemereignisse“ in eine Aktion „AppleScript ausführen“ ein und speichern Sie ihn als eigene Anwendungsdatei in Automator. Hinweis: Die Dateierweiterung dieses Codes muss .app sein, damit dies funktioniert (mehr dazu gleich).
Gehen Sie zu Systemeinstellungen → Sicherheit & Datenschutz → Registerkarte Datenschutz → Eingabehilfen. Fügen Sie die neu erstellte Anwendung zur Liste der Apps hinzu, die Ihren Computer steuern dürfen, und markieren Sie sie.
Führen Sie die neu erstellte App in Ihrem Dienst aus. Dazu können Sie Ihrem AppleScript-Code die folgende Zeile hinzufügen:
do shell script "osascript -e 'tell application \"Application Name\" to activate'"
(Ich verwende normalerweise osascript
to- activate
Anwendungen, wenn ich eine Aktion „AppleScript ausführen“ in einem Dienst verwende, da dies einen von mir entdeckten Fehler bei Diensten umgeht .)
Ihr Dienst sollte jetzt in jeder Anwendung auf Ihrem Computer einwandfrei laufen, obwohl nur einer Anwendung (diejenige, die den „Systemereignisse“-Code enthält) ausdrücklich die Befugnis erteilt wurde, den Computer zu steuern.
Die Datei muss als .app-Datei und nicht als .scpt- oder .applescript-Datei gespeichert werden. Dies liegt daran, dass es nicht möglich ist, .scpt- oder .applescript-Dateien zur Liste der Apps hinzuzufügen, die Ihren Computer steuern dürfen. Im Dialog können nur echte .app-Dateien ausgewählt werden.
Beachten Sie, dass die .app-Datei nicht in Automator erstellt werden muss. Wenn Sie die .app-Datei in Script Editor.app erstellen und die anderen Schritte befolgen, funktioniert die .app-Datei auf die gleiche Weise.
Es gibt jedoch einen Unterschied. Wenn die .app-Datei in Automator erstellt wird, kann man entweder activate
oder verwenden launch
, um die Anwendung in ihrem Dienst auszuführen. Aber wenn die .app-Datei im Skripteditor erstellt wird, kann man sie nur activate
zum Ausführen der Anwendung verwenden; launch
wird dazu führen, dass nichts passiert.
wch1zpink
Rubiks Sphäre
Rubiks Sphäre
Benutzer3439894
Rubiks Sphäre
Benutzer3439894
Rubiks Sphäre
tell application "System Events"
Zeile zu setzen, damit ich die App auswählen kann, die den von Systems Events verwendeten Aufruf ausführt?Benutzer3439894
Rubiks Sphäre
tell application "System Events" to set frontmost of process "TextEdit" to true
muss man für einige Systemereignisse-Befehle (z. B.: ) keinen Zugriff auf die sichtbarste Anwendung gewähren, damit der Systemereignis-Befehl funktioniert, aber für andere Systemereignis-Befehle (wie den in my Frage), muss man Zugriff gewähren?