In Yosemite ist es jetzt möglich, JavaScript for automation sowie Applescript zu verwenden. Ich habe Probleme mit bestimmten StandardAdditions-Befehlen. Z.B. aus der Anwendung Kontakte kann ich displayAlert, aber nicht displayNotification verwenden. Beide sind im StandardsAdditions-Wörterbuch enthalten. Wenn ich diese Befehle über den ScriptEditor ausführe, bekomme ich diese Probleme nicht.Javascript für Automation (OSA) Yosemite: Privileg Fehler für bestimmte StandardAddition Befehle
Für die Befehle, die fehlschlagen, bekomme ich zur Laufzeit: Fehler -10004: Eine Zugriffsverletzung trat auf.
Beispielcode in JavaScript:
ScriptEditor = Application("Script Editor");
ScriptEditor.includeStandardAdditions = true;
app = Application("Contacts"); // or e.g. "Calendar", "System Events", "Finder"
app.includeStandardAdditions = true;
// -- testing: displayAlert()
ScriptEditor.displayAlert("Hello world!");
app.displayAlert("Hello world!"); // success, no privilege error
// -- testing: displayNotification()
ScriptEditor.displayNotification("Hello world!");
//app.displayNotification("Hello world!"); // Error -10004: A privilege violation occurred.
// --- testing: say()
ScriptEditor.say("Hello world!");
//app.say("Hello world"); // Error -10004: A privilege violation occurred.
// --- testing: beep()
ScriptEditor.beep(1);
//app.beep(1); // Error -10004: A privilege violation occurred.
Wenn den entsprechenden Code in Apple mit ich Privileg Verletzungsfehler nicht: obwohl
tell application "Script Editor" to display alert "from Script Editor" -- with Script Editor icon
tell application "Contacts" to display alert "from contacts" -- with Contacts icon
tell application "Script Editor" to display notification "from Script Editor" -- with Script Editor icon
tell application "Contacts" to display notification "from contacts" -- with Script Editor icon (!)
Was ich in diesem Fall bemerken ist, dass die Kontakte Alarm zeigt sich mit dem Kontakte Symbol (und Kontakte App ist aktiviert), aber die Kontakte Benachrichtigung zeigt mit dem Skript Editor Symbol (und die Kontakte App ist nicht aktiviert).
Verwenden von Yosemite 10.10. Ist das ein Fehler oder fehlt mir etwas?
Ich bekomme das gleiche Ergebnis mit Apples Beispiel-Snippet von der Doc-Seite (unter "Scripting Additions"), wenn ich ".currentApplication()" (dh Skript-Editor) durch etwas anderes ersetzen. Ich nehme an, dass dies absichtlich ist (kann nicht dazu führen, dass eine andere App Dinge "sagt"?), Aber ich wünschte, es wäre mit Begründung dokumentiert. –
Wenn dies der Fall wäre, sollten der Dialog und die Warnung in ähnlicher Weise eingeschränkt werden. "Mail benötigt Ihr Passwort" als Dialog ist weitaus gefährlicher. –
Ein Teil des Kommentars von @BenZotto gibt die praktische Antwort: Benutzer 'Application.currentApplication()' anstelle einer anderen Anwendung, um 'displaynotification()' auszuführen. –