Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
axeljaeger •->

Anmeldedatum: 24.02.2006 Beiträge: 2
|
Verfasst am: 05.11.2006 - 11:48 Titel: Skript geht im Skripteditor, nicht aber in einer AS-Awendung |
|
|
Hallo,
ich hab die gleiche Frage schon bei OSXentwicklerforum.de gestellt, ich rechne aber nicht damit, dass da genug AS-Know-How ist, ich sehe es eher als das Cocoa-Forum.
Also:
ich habe folgendes Skript, das Adressbuch anweist, per GUI-Skripting ein Backup der Datenbank anzufertigen.
Es funktioniert prima im AS-Editor, nicht aber in einer AS-Xcode Anwendung:
Code: |
on addressbookbackup()
tell application "Address Book" to activate
tell application "System Events"
tell process "Address Book"
tell menu bar 1
tell menu bar item "Ablage"
tell menu "Ablage"
click menu item "Sicherungskopie des Adressbuchs…"
end tell
end tell
end tell
tell window "Adressbuch"
tell sheet 1
click button "Sichern"
end tell
end tell
end tell
end tell
end addressbookbackup
|
Wenn ich es in AS-Editor ausführe, kann ich zusehen, wie von Roboterhand das Backup angelegt wird. Mache ich es in einer AS-Xcode-Anwendung, kommt folgende nichtssagene Fehlermeldung:
System Events got an error: NSReceiverEvaluationScriptError: 4 (1)
Ich weis echt nicht, wie ich hier weiter komme. |
|
Nach oben |
|
 |
ShooTerKo •--->


Anmeldedatum: 21.03.2006 Beiträge: 221 Wohnort: Hamburg
|
Verfasst am: 06.11.2006 - 18:40 Titel: |
|
|
Moin, moin, Axel!
Eine Meldung wie
System Events got an error: NSReceiverEvaluationScriptError: 4 (1)
kommt eigentlich nur, wenn etwas angesprochen werden soll, was nicht so ansprechbar ist, wie du es gerade tun möchtest. Und gerade das GUI-Scripten ist seeeehhr anfällig dafür. Bei deinem Script denke ich, dass der Fehler entsteht, weil das Menü "Ablage" den Befehl "Sicherungskopie des Adressbuchs…" nicht verfügbar ist. Das gleiche wird übrigens auch im Scripteditor nichts, wenn das Adressbuch zwar gestartet ist, aber das Fenster geschlossen
Du kannst es aber schaffen, indem du vorher das Adressbuch zwingst, sein Hauptfenster zu zeigen:
on addressbookbackup()
tell application "Address Book" to activate
tell application "System Events"
tell process "Address Book"
tell menu bar 1
tell menu bar item "Fenster"
tell menu "Fenster"
click menu item "Adressbuch"
end tell
end tell
tell menu bar item "Ablage"
tell menu "Ablage"
click menu item "Sicherungskopie des Adressbuchs…"
end tell
end tell
end tell
tell window "Adressbuch"
tell sheet 1
click button "Sichern"
end tell
end tell
end tell
end tell
end addressbookbackup
Viel Spaß und willkommen in unserer Runde
CU
ShooTerKo _________________ "It is a mistake to think you can solve any major problems just with potatoes." - Douglas Adams |
|
Nach oben |
|
 |
axeljaeger •->

Anmeldedatum: 24.02.2006 Beiträge: 2
|
Verfasst am: 06.11.2006 - 19:03 Titel: |
|
|
Ich versichere dir, dass vorrausgesetzt, das Fenster ist da, meine Lösung im Skripteditor IMMER funktioniert und NIE in Xcode. Deine Lösung bringt in Xcode leider wieder den gleichen Fehler.
Gerne würde ich hier ein Xcode-Projekt anhängen, an dem du das nachvollziehen kannst, leider sehe ich hier keinen Weg, dies zu tun.
Hier mal ein paar Messwerte:
Mein Originalskript, Skripteditor, Fenster nicht da:
„System Events“ hat einen Fehler erhalten: NSReceiverEvaluationScriptError: 4
Mein Orignalskript, Xcode Projekt, egal ob Fenster da oder nicht:
System Events got an error: NSReceiverEvaluationScriptError: 4 (1)
Dein Skript, Xcode Projekt, egal ob Fenster da oder nicht:
System Events got an error: NSReceiverEvaluationScriptError: 4 (1) |
|
Nach oben |
|
 |
Heiner •-->

Anmeldedatum: 03.12.2005 Beiträge: 62 Wohnort: Moers
|
Verfasst am: 06.11.2006 - 22:39 Titel: |
|
|
Hallo,
Ich hab mal Dein Script durchprobiert. Dabei hab ich festgestellt, dass es gut funktioniert, wenn die Appl. noch nicht gestartet ist. Läuft sie jedoch schon im Hintergrund, so erscheinen die genannten Fehler.
Mit dieser Version hat es aber funktioniert (ich gebe zu, sie ist wohl nicht sehr elegant)
on clicked theObject
tell application "Address Book" to quit -- falls offen
delay 1 -- kleine Pause
tell application "Address Book" to activate
tell application "Address Book"
tell application "System Events"
tell process "Address Book"
tell menu bar 1
tell menu bar item "Ablage"
tell menu "Ablage"
click menu item "Sicherungskopie des Adressbuchs…"
end tell
end tell
end tell
tell window "Adressbuch"
tell sheet 1
click button "Sichern"
end tell
end tell
end tell
end tell
end tell
end clicked |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 06.11.2006 - 22:50 Titel: |
|
|
Wenn Du doch schwörst ... dann glauben wir Dir das ungeprüft.
Trotzdem hat ShooTerKo natürlich recht, wenn er sagt, dass es meist an Objekten liegt, die nicht angesprochen werden können.
Nun ist es ja vielleicht generell so, dass das UI-Scripting in XCode nicht angesprochen werden kann. Das wäre natürlich doof für dich, könnte mir aber durchaus vorstellen, dass es so ist. Hast Du andere Dinge schon mit UI-Scripting in XCode hinbekommen?
Ich würde vielleicht noch mal versuchen, ein "activate" nach dem tell process "Address Book" einzuschiessen. Oder ein set frontmost to true, oder beides. Vielleicht hilft's, wenn's im Vordergrund ist. |
|
Nach oben |
|
 |
ShooTerKo •--->


Anmeldedatum: 21.03.2006 Beiträge: 221 Wohnort: Hamburg
|
Verfasst am: 07.11.2006 - 10:54 Titel: |
|
|
Moin, moin!
So läuft es bei mir in XCode:
on addressbookbackup()
tell application "Address Book" to activate
tell application "System Events"
tell process "Address Book"
tell menu bar 1
tell menu bar item "Fenster"
tell menu 1
tell menu item "Adressbuch"
click
end tell
end tell
end tell
tell menu bar item "Ablage"
tell menu 1
tell menu item "Sicherungskopie des Adressbuchs…"
click
end tell
end tell
end tell
end tell
tell window "Adressbuch"
tell sheet 1
click button "Sichern"
end tell
end tell
end tell
end tell
end addressbookbackup
Musste allerdings erst winzige Dinge umstellen, aber jetzt läuft's.
Sehr komisch, das ganze…
CU
ShooTerKo _________________ "It is a mistake to think you can solve any major problems just with potatoes." - Douglas Adams |
|
Nach oben |
|
 |
ShooTerKo •--->


Anmeldedatum: 21.03.2006 Beiträge: 221 Wohnort: Hamburg
|
Verfasst am: 07.11.2006 - 11:06 Titel: |
|
|
Der Hammer ist:
Mein Script hat vorher sowohl im Scripteditor als auch in XCode funktioniert! Dann habe ich dein XCode-Projekt ausprobiert (was eigentlich exakt wie mein Testprojekt aufgebaut war), das lief dann nicht
Ich also an dem Script wie im Posting oben herumgedoktert, bis es lief und es läuft auch im Scripteditor.
Sehr verwunderlich…
CU
ShooTerKo _________________ "It is a mistake to think you can solve any major problems just with potatoes." - Douglas Adams |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2002 phpBB Group Deutsche Übersetzung von phpBB.de
|
|
|