mac | AppleScript und GUI Scripting
April 1st, 2009 at 11:44
AppleScript ist ne schöne Sache soviel steht außer Frage, jedoch muss man in speziellen Fällen Umwege gehn.
Was tun, wenn man ein Problem mit AppleScript lösen will, das entsprechende Programm aber nicht oder nur teilweise scriptbar ist ?
In solch einem Fall stellt GUI Scripting eine der letzten Möglichkeiten dar, weshalb ich im folgenden auch in wenigen Worten erklären will worum es dabei geht.
Voraussetzung
Ab Werk ist die notwendige Option im Betriebssystem Mac OS X erstmal deaktiviert, d.h. ihr könntet noch so dolle Scriptereien versuchen … GUI Scripting wird nur funktionieren wenn ihr folgende Vorbedingung erfüllt:
Enable access for assistive devices
muss aktiviert sein.
Aber wo findet man diese Option überhaupt ?
Step by Step
Also via SystemEinstellungen (aka System Preferences) den Punkt Universal Access ausfindig machen. Ich nehme da immer gerne das Suchfeld oben rechts in Anspruch, zumindest wenn ich mir mal nicht so sicher bin wo sich etwas von mir gesuchtes befindet.

Dort aktiviert ihr dann den zweitletzten Punkt

Ok damit sind die Vorraussetzungen erfüllt, dann wollen wir doch mal testen was da so geht.
Anwendungsbeispiel
Wie wäre es den mit nem einfachen Selbsttest. Wir wollen via AppleScript testen ob diese gerade eben getätigte Einstellung noch aktiv ist oder nicht.
Wie der eine oder andere sicherlich beim scripten schon festgesteltl hat, sind Teile der SystemEinstellungen leider nicht komplett mit normalem AppleScript ansprechbar …. und voila wir sind wieder beim Thema GUI Scripting
Folgender Code prüft ob die Einstellung erfüllt ist, ist dies nicht der Fall öffnet sich die System-Einstellungen, es wird Universal Access angewählt und anschließend werdet ihr mit einem Dialog darauf hingewiesen dass ihr den Status unten ändern könnt.

Soweit so gut …. vielleicht sollten wir das noch minimal ausbauen. Wie wäre es den damit den Anzeigemodus von Farbe auf Graustufen zu wechseln ?
Nachdem wir dank obigem Code wissen dass die Vorrausetzungen erfüllt sind könnte man also in etwa sowas ergänzend einbinden

Graustufen / grayscale ?

Na klar – zumindest für meine Augen ist das manchmal sogar sehr entspannend. Ich würds ja mal ausprobieren
Ein Hinweis ist absolut noch von Nöten:
Es kann zu Ungereimtheiten kommen wen man Einstellungen einerseits per Script ändert, aber gleichzeitig auch die entsprechende GUI offen hat die den Status anzeigt. Öffnet ihr also die Systemeinstellungen und seht das obiges Setting nicht aktiviert ist und ändert den Status via einem zweiten Script, wird die UI dieses mit hoher Wahrscheinlichkeit nicht gleich korrekt anzeigen.
Fazit
GUI-Scripting ist dann eine willkommene Ergänzung wenn man mit anderen Mitteln nicht mehr weiterkommt – es ist aber auch ganz klar: fernab von optimal.
Wollt ihr ein Problem umbedingt Script-basierend lösen viel Spaß damit, aber seit euch sicher das dieser Ansatz weder schön noch in den meisten Fällen problemslos funktioniert.
Ich hoffe der Beitrag konnte die Möglichkeiten im kleinen aufzeigen – wer tiefer rein will wird wohl nicht um Lektüre drumrumkommen
Tags: Apple, applescript, gui scripting, system preferences



April 1st, 2009 at 13:30
GUI Scripting ist ne feine Sache. Was micht dabei stört ist, das wieder ein Dienst mehr im Hintergrund läuft. Probiere gerade über Carbon/Cocoa Schnittstellen und Access API meinen Tiling Window Manager zum laufen zu bekommen
http://stackoverflow.com/questions/614185/window-move-and-resize-apis-in-os-x
April 1st, 2009 at 13:38
bin ja mal echt gespannt was da rauskommt … ich meld mich schonmal als Tester an =)