[{"@context":"http:\/\/schema.org\/","@type":"BlogPosting","@id":"https:\/\/wiki.edu.vn\/wiki11\/2020\/12\/24\/apple-event-wikipedia\/#BlogPosting","mainEntityOfPage":"https:\/\/wiki.edu.vn\/wiki11\/2020\/12\/24\/apple-event-wikipedia\/","headline":"Apple Event – Wikipedia","name":"Apple Event – Wikipedia","description":"before-content-x4 Dieser Artikel befasst sich mit Apples Software-Messaging-System. Informationen zu ihren Medienereignissen finden Sie unter Apple-Medienereignisse. Apple-Ereignisse sind der nachrichtenbasierte","datePublished":"2020-12-24","dateModified":"2020-12-24","author":{"@type":"Person","@id":"https:\/\/wiki.edu.vn\/wiki11\/author\/lordneo\/#Person","name":"lordneo","url":"https:\/\/wiki.edu.vn\/wiki11\/author\/lordneo\/","image":{"@type":"ImageObject","@id":"https:\/\/secure.gravatar.com\/avatar\/44a4cee54c4c053e967fe3e7d054edd4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/44a4cee54c4c053e967fe3e7d054edd4?s=96&d=mm&r=g","height":96,"width":96}},"publisher":{"@type":"Organization","name":"Enzyklop\u00e4die","logo":{"@type":"ImageObject","@id":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","url":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","width":600,"height":60}},"image":{"@type":"ImageObject","@id":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","url":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","width":100,"height":100},"url":"https:\/\/wiki.edu.vn\/wiki11\/2020\/12\/24\/apple-event-wikipedia\/","wordCount":2403,"articleBody":" (adsbygoogle = window.adsbygoogle || []).push({});before-content-x4Dieser Artikel befasst sich mit Apples Software-Messaging-System. Informationen zu ihren Medienereignissen finden Sie unter Apple-Medienereignisse.Apple-Ereignisse sind der nachrichtenbasierte Interprozess-Kommunikationsmechanismus in Mac OS, der zuerst in System 7 angezeigt wird und seitdem von jeder Version des klassischen Mac OS und von macOS unterst\u00fctzt wird. Apple-Ereignisse beschreiben “Ereignisse auf hoher Ebene” wie “Dokument \u00f6ffnen” oder “Datei drucken”, w\u00e4hrend fr\u00fchere Betriebssysteme wesentlich grundlegendere Ereignisse unterst\u00fctzt hatten, n\u00e4mlich “Klicken” und “Tastendruck”. Apple-Ereignisse bilden die Grundlage des Mac OS-Skriptsystems, der Open Scripting-Architektur (die Hauptsprache von AppleScript). Der Ausgangspunkt ist ein dynamisch typisiertes, erweiterbares Deskriptorformat namens AEDescDies ist nur ein OSType-Code, der den Datentyp zusammen mit einem Block typabh\u00e4ngiger Daten angibt. Zum Beispiel der OSType-Code inte Gibt an, dass es sich bei den Daten um eine 4-Byte-Ganzzahl mit Vorzeichen im Big-Endian-Format handelt.Neben vordefinierten Typcodes f\u00fcr verschiedene g\u00e4ngige einfache Typen gibt es zwei vordefinierte strukturierte Deskriptortypen: an AERecord, der Datentyp hat reco (Aufzeichnung) und AEList mit Typ list (Liste oder Array). Die interne Struktur dieser enth\u00e4lt rekursiv verschachtelte AEDescs, w\u00e4hrend der AERecord jedem Element eine eindeutige Datensatzfeld-ID zuordnet, bei der es sich um einen OSType handelt. Der Apple Event Manager bietet API-Aufrufe zum Erstellen dieser Strukturen sowie zum Extrahieren ihres Inhalts und zum Abfragen des darin enthaltenen Inhaltstyps.Der Apple Event Manager unterst\u00fctzt ebenfalls Zw\u00e4nge, die AEDescs von einem Datentyp in einen anderen konvertiert. Zus\u00e4tzlich zu Standardzw\u00e4ngen, beispielsweise zwischen ganzzahligen und reellen Typen, k\u00f6nnen Anwendungen ihre eigenen R\u00fcckrufe f\u00fcr Zwangshandler installieren, die Konvertierungen in und von benutzerdefinierten Datentypen verarbeiten. Ein Apple Event Richtig ist ein AERecord mit Feldern, die vom Zweck des Ereignisses abh\u00e4ngen. Dar\u00fcber hinaus hat es Attribute (die sich von Datensatzfeldern unterscheiden, die jetzt als bezeichnet werden Parameter des Ereignisses) aus einem vom Apple Event Manager vordefinierten Satz. Diese geben an, was das Ereignis tun soll (durch Ereignisklasse und Ereignis-ID), die Zieladresse, an die das Ereignis gesendet werden soll (dies kann ein Prozess auf dem lokalen oder einem Remotecomputer sein), und verschiedene andere Optionen f\u00fcr die Behandlung. Remotecomputer mussten zun\u00e4chst \u00fcber AppleTalk verbunden werden, Mac OS 9 f\u00fcgte jedoch die Option f\u00fcr Verbindungen \u00fcber TCP \/ IP hinzu.Nach dem Senden eines Apple-Ereignisses an den Zielprozess kann der Sendevorgang festlegen, dass ein Apple-Antwortereignis empfangen wird. Dies kann verschiedene vom Ziel zur\u00fcckgegebene Informationen \u00fcber die Verarbeitung des urspr\u00fcnglichen Ereignisses enthalten, einschlie\u00dflich eines Fehlercodes, der Erfolg \/ Misserfolg anzeigt, aller vom urspr\u00fcnglichen Ereignis angeforderten Informationen und \/ oder anderer geeigneter Informationen.Apple-Ereignisse bilden die Grundlage f\u00fcr das AppleEvent-Objektmodell, das wiederum die Grundlage f\u00fcr OSA und AppleScript bildet. Ab 2016[update]Die offizielle Implementierung der Apple Event Manager-API ist in C und seinen Nachkommen, einschlie\u00dflich C ++, verf\u00fcgbar. Offizielle Bindungen werden auch f\u00fcr Objective-C und Swift \u00fcber die Cocoa-API bereitgestellt. Inoffizielle Bindungen bestehen auch f\u00fcr andere Sprachen (mit unterschiedlichen Einschr\u00e4nkungen), einschlie\u00dflich Perl, UserTalk, Ruby und Python.Objektmodell[edit]Das AppleEvent-Objektmodell ((AEOM) war eine Reihe von Protokollen, die auf AppleEvents basierten und mit denen Anwendungen, die unter klassischem Mac OS und macOS ausgef\u00fchrt wurden, die Funktionen des anderen steuern konnten. Anwendungen, die einen Teil des AEOM implementiert haben, wurden aufgerufen skriptf\u00e4hig weil sie \u00fcber AppleScript gesteuert werden k\u00f6nnten. Leider blieb die Unterst\u00fctzung der Skriptf\u00e4higkeit w\u00e4hrend der gesamten Geschichte des klassischen Mac OS l\u00fcckenhaft und inkonsistent. Das AEOM stellte eine syntaktische Ebene bereit, unter der jede Anwendung ihre internen Objekte ver\u00f6ffentlichen konnte, sodass diese Objekte auf standardisierte Weise bearbeitet werden konnten. Im Gegensatz zu anderen \u00e4hnlich klingenden Konzepten wie ToolTalk gab es eine klare, orthogonale Unterscheidung zwischen Substantive und Verben;; Anstatt separate Befehle f\u00fcr “Dokument schlie\u00dfen” und “Fenster schlie\u00dfen” bereitzustellen, gab es daher ein einzelnes Verb “Schlie\u00dfen”, das Verweise auf “Dokument” – oder “Fenster” -Objekte oder jedes andere von der Anwendung ver\u00f6ffentlichte Objekt enthalten konnte.Die Objekte, die eine Anwendung \u00fcber ihre AEOM-Unterst\u00fctzung zur Verf\u00fcgung gestellt hat, wurden in einer Hierarchie angeordnet. Oben befand sich die Anwendung selbst, auf die \u00fcber einen Nullobjektdeskriptor verwiesen wurde. Auf andere Objekte wurde verwiesen, indem (rekursiv) ihr \u00fcbergeordnetes Objekt angegeben wurde, zusammen mit anderen Informationen, die es als untergeordnetes Objekt dieses \u00fcbergeordneten Objekts identifizierten, die alle in einem AERecord gesammelt wurden. Ein Iterator wurde von Eltern bereitgestellt, um ihre Kinder oder Kinder einer bestimmten Klasse aufzulisten, sodass Anwendungen eine Reihe von Elementen ansprechen k\u00f6nnen. Das System \u00e4hnelte im Allgemeinen dem in XML verwendeten Dokumentobjektmodell, jedoch mit einigen Unterschieden in den Zugriffsmustern.Jedes Objekt k\u00f6nnte haben Elemente und Eigenschaften;; Elemente waren andere Objekte, die erstellt oder gel\u00f6scht werden konnten, w\u00e4hrend Eigenschaften nicht erstellt oder gel\u00f6scht werden konnten, sondern Werte hatten, die abgefragt oder ge\u00e4ndert werden konnten. Beispielsweise kann die Anwendung ein oder mehrere Fenster haben Elemente Darstellen von Fenstern, die den Inhalt aktuell ge\u00f6ffneter Dokumente anzeigen. Diese Fenster k\u00f6nnten haben Eigenschaften wie Titel, Position und Gr\u00f6\u00dfe.Eine Anwendung kann benutzerdefinierte Verben f\u00fcr die Bearbeitung ihrer Objekte definieren. Das AEOM spezifizierte auch verschiedene Standardverben, die (wie erhofft) Anwendungen auf konsistente Weise implementieren w\u00fcrden, wie z. B. \u00d6ffnen, Schlie\u00dfen, Erstellen von Elementen, L\u00f6schen, Festlegen von Daten und Abrufen von Daten. Jedes Verb wurde als AppleEvent eines bestimmten Typs und einer bestimmten Klasse definiert, zusammen mit bestimmten Parametern bestimmter Typen, von denen erwartet wurde, dass sie vorhanden sind. Beispielsweise war das Ereignis “Daten abrufen” das Standardmittel zum Abrufen des Werts einer Eigenschaft: Es wurde im Wesentlichen ein Parameter verwendet, bei dem es sich um einen Objektdeskriptor handelte, der die abzufragende Eigenschaft identifizierte. Der Wert dieser Eigenschaft wird im Antwortereignis zur\u00fcckgegeben. Das Ereignis “Daten festlegen” hat zwei Parameter verwendet, den Objektdeskriptor f\u00fcr die festzulegende Eigenschaft und den neuen Wert f\u00fcr die Eigenschaft. Es wurde nur erwartet, dass das Antwortereignis einen Erfolgsstatus oder einen Fehlercode zur\u00fcckgibt.Die gesamte AppleEvent-Architektur identifiziert Dinge mithilfe von 4-Byte-OSType-Codes, wobei tats\u00e4chliche W\u00f6rter oder Phrasen in Englisch (oder einer anderen Sprache) sorgf\u00e4ltig vermieden werden. Stattdessen wird die Entsprechung zwischen internen AppleEvent-Codes und externen Beschreibungen in nat\u00fcrlicher Sprache durch das angegeben aete ((AppleEvent-Terminologieerweiterung) resource – Die “Erweiterung” entspricht der in AppleScript selbst integrierten Standardterminologie. Eine Anwendung kann mehrere ‘aete’-Ressourcen f\u00fcr mehrere Sprachen bereitstellen, entsprechend dem urspr\u00fcnglichen mehrsprachigen Design von AppleScriptBetrachten Sie beispielsweise die folgende AppleScript-Sequenz, die eine fiktive Zeichenanwendung steuert: tell application \"ScriptableDraw\" set background color of window \"New Drawing\" to background color of window \"Old Drawing\" end tellDies beinhaltet tats\u00e4chlich das Senden von zwei AppleEvents an die Zielanwendung (und den Empfang der entsprechenden Antworten): Zuerst wird ein Get-Data-Ereignis gesendet, um die Hintergrundfarbeneigenschaft des Fensters abzurufen, das durch den Namen “Old Drawing” gekennzeichnet ist. Anschlie\u00dfend wird ein Set-Data-Ereignis gesendet, um den als Hintergrundfarbeneigenschaft des Fensters mit dem Namen “New Drawing” zur\u00fcckgegebenen Wert anzuwenden.Da diese Art von Zugriffsmuster typisch war, nutzte AppleScript das tell Anweisung, die den Kontext auf \u00e4hnliche Weise wie das benannte Objekt umschaltete with Anweisung in Visual Basic oder Pascal gefunden. Alle Befehle nach dem tell zum entsprechenden end tell w\u00fcrde an das im tellanstelle des Standardobjekts, das die aktuelle Anwendung war.Objektdeskriptoren erm\u00f6glichten die Identifizierung von Objekten auf verschiedene Weise. Am interessantesten war die Verwendung einer where-Klausel (die in die AppleScript-Terminologie als \u00fcbersetzt wurde Filterausdruck). Beispielsweise wurde das AppleScript 1.0 SDK mit dem Quellcode f\u00fcr eine Beispielanwendung namens Scriptable Text Editor ausgeliefert, die auf Skripte wie die folgenden reagiert: tell application \"Scriptable Text Editor\" tell window \"Example Document\" set text style of every word whose length > 7 to bold end tell end tellBis heute ist es selten, dass diese Art von Leistung in universellen Skriptsprachen au\u00dferhalb von SQL zu finden ist.Das Hinzuf\u00fcgen von Unterst\u00fctzung f\u00fcr AEOM unter dem klassischen Mac OS war ein schwieriger Prozess. Anwendungsentwickler mussten ihre Objekte identifizieren und Code von Hand schreiben, damit sie angesprochen werden konnten. Dies erfolgte normalerweise in Form von Code f\u00fcr die R\u00fcckgabe des “n\u00e4chsten” Objekts eines bestimmten Typs, sodass AppleScript dar\u00fcber iterieren kann. Da das Betriebssystem jedoch kein Objektmodell enthielt, wurde diese Arbeit ausschlie\u00dflich den Entwicklern \u00fcberlassen, von denen viele es nicht implementierten. Seltsamerweise bot sogar Apples eigenes Anwendungsframework, MacApp, kein solches Modell an, mit Ausnahme der ihm bekannten GUI-Objekte, was den Entwickler erneut dazu veranlasste, den gr\u00f6\u00dften Teil der Skripterstellung f\u00fcr die Objekte durchzuf\u00fchren, die die Daten selbst darstellen. Vor allem aus diesen Gr\u00fcnden war die AppleScript-Unterst\u00fctzung nicht sehr verbreitet.Apple hat versucht, dieses Problem mit der Einf\u00fchrung verschiedener Objekt- “Suites” zu l\u00f6sen, die Standardobjekte und -verben darstellten, von denen erwartet wurde, dass sie von verschiedenen Arten von Anwendungen unterst\u00fctzt werden. Beispielsweise wurde von allen Anwendungen erwartet, dass sie die “Kernsuite” unterst\u00fctzen, und von jedem Anwendungsbearbeitungstext wurde erwartet, dass er die “Textsuite” unterst\u00fctzt. Durch die Auswahl eines geeigneten Satzes von Suiten k\u00f6nnte der Entwickler zumindest den Arbeitsaufwand f\u00fcr die Planung der Belichtung seiner Objekte verringern. Da diese Objekte jedoch im Allgemeinen nicht Teil des Systems selbst waren (mit Ausnahme des stark eingeschr\u00e4nkten TextEdit-Editors), wurde die eigentliche Implementierung dem Entwickler \u00fcberlassen.In Cocoa, dem System, das fr\u00fcher als OpenStep bekannt war, entwickelte Anwendungen bieten eine umfangreiche Objektlaufzeit, die von jeder anderen Anwendung abgefragt werden kann. Dies erleichtert die Implementierung des AEOM erheblich und reduziert den Codebedarf in einer durchschnittlichen Anwendung erheblich. Dar\u00fcber hinaus besteht die Mehrzahl der Cocoa-Anwendungen haupts\u00e4chlich aus Cocoa-Standardobjekten, die alle aktualisiert wurden, um eine ziemlich umfangreiche Skriptf\u00e4higkeit zu bieten. Dies gilt nicht nur f\u00fcr GUI-Objekte wie unter MacApp, sondern auch f\u00fcr darin enthaltene Datenobjekte, einschlie\u00dflich Text, Tabellen und verschiedene Listenobjekte. Eine Textdatei wird verwendet, um die internen “objekt\u00e4hnlichen” Namen auf lesbare Versionen abzubilden. In den meisten F\u00e4llen reicht es aus, diese zu erstellen, um den meisten Programmen eine ziemlich umfangreiche Skriptf\u00e4higkeit zu verleihen.W\u00e4hrend Cocoa-Anwendungen nicht auf AEOM basieren und h\u00e4ufig subtil andere Objekte als die urspr\u00fcnglich definierten Standardobjekte von Apple verwenden, sind Cocoa-Apps im Allgemeinen viel skriptf\u00e4higer als ihre “klassischen” Gegenst\u00fccke – tats\u00e4chlich ist es ungew\u00f6hnlich, eine Cocoa-Anwendung zu finden nicht bis zu einem gewissen Grad skriptf\u00e4hig.Weiterf\u00fchrende Literatur[edit]Cook, William R. (29. September 2006), AppleScript (PDF), University of Texas in Austin, S. 1\u20131\u20131\u201321, CiteSeerX 10.1.1.76.6993, doi:10.1145 \/ 1238844.1238845abgerufen 9. Mai 2009. Siehe insbesondere Abschnitt 2.3 \u201eApple Events\u201c (Seiten 9\u201313), obwohl die Geschichte und Bedeutung von Apple Events auch an anderer Stelle in diesem Dokument er\u00f6rtert wird.Externe Links[edit] (adsbygoogle = window.adsbygoogle || []).push({});after-content-x4"},{"@context":"http:\/\/schema.org\/","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https:\/\/wiki.edu.vn\/wiki11\/#breadcrumbitem","name":"Enzyklop\u00e4die"}},{"@type":"ListItem","position":2,"item":{"@id":"https:\/\/wiki.edu.vn\/wiki11\/2020\/12\/24\/apple-event-wikipedia\/#breadcrumbitem","name":"Apple Event – Wikipedia"}}]}]