Ist es möglich, dass die Schaltfläche "Beenden" einer AppleScript-Anwendung einen geöffneten Dialog überschreibt (dh abbricht)?

Führen Sie die folgenden Schritte aus, um das Problem zu bezeugen, auf das ich mich beziehe:

  1. Erstellen Sie ein AppleScript, das einfach nur einen Dialog enthält display dialog.

  2. Speichern Sie dieses Skript als .app-Datei.

  3. Führen Sie die .app-Datei aus.

Wenn Sie mit der rechten Maustaste auf das Dock-Symbol der Datei klicken, klicken Sie dann mit der linken Maustaste auf Quit, wie im folgenden Screenshot dargestellt:

Sie werden feststellen, dass nichts passiert. Das heißt, die Anwendung bleibt offen.

Die Tastenkombination ⌘ command+ Qist ähnlich sinnlos.

Die einzige Möglichkeit zum Beenden dieser Anwendung (mit Ausnahme des Klickens auf „Force Quit“ in Activity Monitor.app) besteht darin, auf eine Schaltfläche im aktiven Dialogfeld der Anwendung zu klicken.

Ist es möglich, die einer AppleScript-Anwendung innewohnende „Beenden“-Funktion aus der Anwendung heraus zu beenden, selbst wenn die Anwendung gerade einen Dialog anzeigt, wenn die „Beenden“-Funktion aufgerufen wird?


Hinweis: Der display alertDialog und der choose from listDialog verhalten sich genauso dominant wie der display dialogDialog.

⌘Q funktioniert nicht, weil es im Menüleistenmenü der App ausgegraut ist. Sie können mit der rechten Maustaste auf die Dock-Kachel der App klicken und Beenden erzwingen aus dem Kontextmenü der Dock-Kachel der App auswählen. Das heißt, ich glaube nicht, dass es einen Standard-AppleScript-Code gibt, den Sie implementieren können, der die App beendet, während der Anzeigedialog vorhanden ist, indem Sie im Kontextmenü der Dock-Kachel der App auf Beenden klicken.
Ich war nicht vertraut mit Option-Rechtsklick, „Force Quit“. Das ist ein netter Tipp. Diese Methode schließt tatsächlich den Dialog und die Anwendung, so wie ich es wünsche. Ich kann mir nicht vorstellen, dass es eine bessere Antwort gibt. Wenn Sie das also als Antwort posten möchten, akzeptiere ich es. Danke!
Ich war letzte Nacht zu müde, um es in Form einer richtigen Antwort zu schreiben. :)

Antworten (1)

Die kurze Antwort ist, nein .

Die längere Antwort lautet: Per Design erstellt ein AppleScript display dialogein modales Anwendungsobjekt, was bedeutet, dass die Anwendung wartet, bis der Benutzer auf die Steuerelemente des Objekts reagiert, bis sie die entsprechende Eingabe für dieses Objekt erhält, um fortzufahren.

Wenn eine Abbrechen-Schaltfläche vorhanden ist und nicht die Standardschaltfläche, kann sie durch Drücken der Esc- Taste oder durch Drücken der Befehlstaste geschlossen werden , um die Abbrechen-Schaltfläche zu aktivieren. Wenn Sie eine Abbrechen-Schaltfläche verwenden, können Sie den Fehler abfangen und eine ausführen, returndie die Ausführung des verbleibenden Codes der App anhält.

Wenn es keine Abbrechen-Schaltfläche gibt, kann es nicht ohne direkte Interaktion oder erzwungenes Beenden durch eine von mehreren Methoden geschlossen werden.

Beenden erzwingen:

  • Sie können mit der rechten Maustaste auf die Dock-Kachel der App klicken und Beenden erzwingen aus dem Kontextmenü der Dock-Kachel der App auswählen.
  • Drücken Sie Wahl-Befehl-Esc, um das Dialogfeld „Anwendungen beenden erzwingen“ aufzurufen.
  • Erzwingen Sie das Beenden über den Aktivitätsmonitor.
  • Der Prozess kann auch auf verschiedene Arten vom Terminal aus beendet werden, geht jedoch über den Rahmen dieser Antwort hinaus, da es sich nicht um eine GUI-Methode handelt.

Außerdem funktioniert ⌘Q nicht, weil es im Menüleistenmenü der App ausgegraut ist.

All dies gilt auch im Skripteditor selbst, nicht nur bei einer AppleScript-App. Sobald eine display dialogvorhanden ist, muss mit ihr entsprechend interagiert werden oder die App wird durch die eine oder andere Methode zum Beenden gezwungen.