osascript-Fehler: AppleScripts anfänglicher "Aus Liste auswählen"-Dialog ist nicht ausgewählt

Ich führe den folgenden Code im Terminal aus:

osascript "/Users/Me/Desktop/Run this script on wake.scpt"

Wenn das erste Dialogfeld meiner .scpt-Datei ein choose from listDialogfeld ist, wird dieses Dialogfeld nicht ausgewählt. Das heißt, ich kann nicht einfach die enterTaste drücken, um "OK" zu drücken; Ich muss zuerst auf eine beliebige Stelle im Dialogfeld klicken, damit die obere Leiste des Dialogfelds von weiß zu grau wechselt, und erst dann kann ich drücken, um enterfortzufahren.

Um es klar zu sagen, der Dialog kommt ganz gut in den Vordergrund - er ist einfach nicht ausgewählt.

Wenn das erste Dialogfeld jedoch ein display dialogoder- Dialog ist, wirddisplay alert das Dialogfeld automatisch ausgewählt. Es passiert einfach so, dass der anfängliche Dialog meiner .scpt-Datei ein Dialog ist.choose from list

Ich habe versucht, activate mein die Zeile über dem choose from listDialog zu schreiben, aber das hat nichts gebracht.

Wenn ich im Skripteditor "Dieses Skript auf Wake.scpt ausführen" ausführe, choose from listwird der Dialog tatsächlich ausgewählt. Daher wissen wir, dass das Problem damit zusammenhängt osascript.

Hat jemand eine Problemumgehung, um zu erzwingen, dass der choose from listDialog automatisch ausgewählt wird?

Ich habe versucht, eine Standardauswahl zu implementieren, indem ich den default itemsParameter in den choose from listBefehl eingefügt habe (obwohl ich in diesem Fall eigentlich nicht möchte, dass ein Standardelement vorhanden ist). Ich dachte, dass dies die Auswahl des Dialogs erzwingen könnte. Der Listendialog ist jedoch immer noch nicht ausgewählt.

Als letzten Ausweg nehme ich an, dass ich AppleScript verwenden könnte, um mit der Maus auf die Mitte des Bildschirms zu klicken (wo sich das Dialogfeld befindet). Ich würde jedoch eine elegantere Lösung bevorzugen, da AppleScript bei Mausklicks unzuverlässig sein kann.


Wenn Sie sich fragen, warum ich osascriptüberhaupt arbeite, liegt es daran, dass ich SleepWatcher verwende , um automatisch ein AppleScript auszuführen, wenn mein Computer aus dem Ruhezustand aufwacht. ( Hier ist eine sehr hilfreiche Anleitung , die ich zum Einrichten von SleepWatcher verwendet habe.)

Dies ist der vollständige Text meiner .wakeup-Datei:

#!/bin/bash
osascript "/Users/Me/Desktop/Run this script on wake.scpt"
Wie ich in meiner Antwort unten schrieb (vom OP unbemerkt), ist Ihr (sein) Problem nicht AppleScript, sondern die Tatsache, dass osascript kein bloßer Befehl , sondern ein eigener Prozess ist. Deshalb darfst du (er) activate application "Terminal" NICHT „me“ (= Osascript) …

Antworten (2)

Das ist seltsam. Fürs Erste würde ich empfehlen, dass Sie Ihr Skript als ausführbare Datei speichern. Öffnen Sie dazu Ihr Applescript im Skripteditor, klicken Sie dann auf das Menü „Datei“, dann auf „Exportieren“ und wählen Sie dann „Anwendung“ im Dropdown-Feld „Dateiformat“ aus. Sie könnten dann ein Applescript erstellen, das diese Anwendung ausführt.

Leider löst diese Lösung das Problem nicht. Ich habe mein AppleScript als .app-Datei über Automator gespeichert. Ich habe dann versucht, die .app über das Terminal mit den beiden hier erläuterten Methoden zu starten . Ich habe auch versucht, einfach auf die App zu doppelklicken und sie vom Finder aus auf die übliche Weise zu starten. Ich habe auch versucht, die App mit AppleScript in einer separaten .scpt-Datei zu starten, wie Sie vorgeschlagen haben. In all diesen Fällen choose from listist der Anfangsdialog nicht ausgewählt. Aber jetzt wissen wir, dass der Fehler breiter ist als osascript.
Bitte ignorieren Sie meinen vorherigen Kommentar. Ich habe festgestellt, dass beim Ausführen der .app-Version der AppleScript-Datei der anfängliche Listendialog zwangsläufig ausgewählt wird, solange ich activate mein der obigen Zeile einfüge choose from list, unabhängig davon, wie die .app-Datei ausgeführt wird. Danke!
Kein Problem! Schön, dass die Verwendung von .app funktioniert hat!

Wie ich bereits im Zusammenhang mit einer anderen Frage herausgefunden habe, ist Ihr Problem das "Ich" in Ihrem Skript und daher nicht nur "bezogen" auf Osascript:

osascript IST DEIN Problem…

… da osascript KEIN bloßer Befehl im Terminal ist, sondern eigentlich ein eigener Prozess .
Wenn Sie eine Datei vom Terminal aus öffnen möchten, müssen Sie "Terminal aktivieren" und NICHT "mich aktivieren" [= osascript].

(Da Sie bereits eine Antwort als Ihre "Auserwählte" akzeptiert haben, beschränke ich mich auf diesen Hinweis.)