Ausführen eines Appleskriptes.
Ausführen eines Appleskriptes. Dem Aufruf wird dabei der komplette Skripttext, nicht der Pfad auf eine Skriptdatei, mitgegeben.
Alles was nicht ausdrücklich ausgeschlossen wird, wird von irgend jemandem probiert. Deshalb hier ausdrücklich : Der Befehl kann nur unter Mac OS X erfolgreich ausgeführt werden!. Unter Windows ist der Aufruf implementiert, liefert aber das Ergebnis -1199.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode -1753 : Syntaxfehler im Skript -1199 : Nicht implementiert (nur Windows) |
|
script | String oder char* | - | Vollständiger Skriptcode - natürlich in AppleScript |
resultString | String oder char* | 0 | Allokierter String für das Ergebnis des Skriptes, das dort mit return zurückgegeben wird. |
Das folgende Skript erwartet im aktuellen Textrahmen einen vollständigen Dateipfad. Von dieser Datei wird eine Kopie erzeugt und der vollständige Pfad der Kopie zurückgegeben.
int create_duplicate (char * script) { *script = 0;
strcat (script, "set p to \"$MyPath\"\n"); strcat (script, "set a to POSIX file p\n"); strcat (script, "\n"); strcat (script, "tell application \"Finder\"\n"); strcat (script, " set r to duplicate a\n"); strcat (script, "end tell"); strcat (script, "\n"); strcat (script, "set res to POSIX path of (r as string)\n"); strcat (script, "return res"); return 0; }
int main () { String txt = string::alloc (); char script [4000]; char resString[4000]; int res;
textmodel::gettext (txt); create_duplicate (script); strreplace (script, "$MyPath", file::uncurtain (string::get (txt)));
res = run_applescript (script, resString); wlog ( "", "Duplicate returned %d with message '%s'\n", res, resString);
return 0; }
Und hier der umgekehrte Weg - AppleScript führt cScript aus :
(* Das Skript öffnet die Produktrecherche. Dann wird ein Datenbank-Login gemacht und die Produktrecherche wird geladen. *) tell application "Adobe InDesign CS5" set visible of panel "Produktrecherche" to 1
set CT to comet 1 -- Die 1 ist wichtig!! tell CT set sc to "" set sc to sc & "int main () {" set sc to sc & "datapool::login (1, \"mysql\", \"root\", \"\", \"tablemodule\", \"\", 0, 0);" set sc to sc & "list::reload (3, 1);" set sc to sc & "return 0;}"
eval cscript sc argument "" options ""
end tell end tell
Alphabetic index HTML hierarchy of classes or Java