Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Skript geht im Skripteditor, nicht aber in einer AS-Awendung

 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Studio Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
axeljaeger
•->
•->


Anmeldedatum: 24.02.2006
Beiträge: 2

BeitragVerfasst am: 05.11.2006 - 11:48    Titel: Skript geht im Skripteditor, nicht aber in einer AS-Awendung Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ShooTerKo
•--->
•--->


Anmeldedatum: 21.03.2006
Beiträge: 221
Wohnort: Hamburg

BeitragVerfasst am: 06.11.2006 - 18:40    Titel: Antworten mit Zitat

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 Wink

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 Very Happy

CU
ShooTerKo
_________________
"It is a mistake to think you can solve any major problems just with potatoes." - Douglas Adams
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
axeljaeger
•->
•->


Anmeldedatum: 24.02.2006
Beiträge: 2

BeitragVerfasst am: 06.11.2006 - 19:03    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Heiner
•-->
•-->


Anmeldedatum: 03.12.2005
Beiträge: 62
Wohnort: Moers

BeitragVerfasst am: 06.11.2006 - 22:39    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 06.11.2006 - 22:50    Titel: Antworten mit Zitat

Wenn Du doch schwörst ... dann glauben wir Dir das ungeprüft. Wink

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
ShooTerKo
•--->
•--->


Anmeldedatum: 21.03.2006
Beiträge: 221
Wohnort: Hamburg

BeitragVerfasst am: 07.11.2006 - 10:54    Titel: Antworten mit Zitat

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. Eh! Eh!

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
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
ShooTerKo
•--->
•--->


Anmeldedatum: 21.03.2006
Beiträge: 221
Wohnort: Hamburg

BeitragVerfasst am: 07.11.2006 - 11:06    Titel: Antworten mit Zitat

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 Shocked
Ich also an dem Script wie im Posting oben herumgedoktert, bis es lief und es läuft auch im Scripteditor. Weihnachts-Smiley

Sehr verwunderlich…

CU
ShooTerKo
_________________
"It is a mistake to think you can solve any major problems just with potatoes." - Douglas Adams
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Studio Forum Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
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


AppleScript für absolute Starter