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

tell application "FileMaker xy" ?

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


Anmeldedatum: 10.11.2011
Beiträge: 92
Wohnort: Niederösterreich

BeitragVerfasst am: 17.02.2012 - 11:09    Titel: tell application "FileMaker xy" ? Antworten mit Zitat

Wenn ich per tell-Befehl FileMaker starten oder aktivieren will, muß ich ja je nach installierter Version tell application "FileMaker Pro", "FileMaker Pro Advanced", "FileMaker Developer" schreiben.

Geht das auch einfacher, so daß er einfach die FileMaker-Version öffnet, die auf dem jeweiligen System drauf ist?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
woodpecker
•--->
•--->


Anmeldedatum: 12.10.2010
Beiträge: 150
Wohnort: Roggentin/Rostock

BeitragVerfasst am: 17.02.2012 - 13:52    Titel: Antworten mit Zitat

Hallo MacTruth,
schau Dir mal diesen Thread an:

http://www.fischer-bayern.de/phpBB2/viewtopic.php?t=3192

Gruß woodpecker
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
MacTruth
•-->
•-->


Anmeldedatum: 10.11.2011
Beiträge: 92
Wohnort: Niederösterreich

BeitragVerfasst am: 17.02.2012 - 14:29    Titel: Antworten mit Zitat

Gut, ich habe nachgeschaut und Folgendes geschrieben:

Code:
tell application "Finder"
   try
      open FMpath
   on error
      my Mitteilung((DLG_FMp1 & DLG_REt11 & DLG_SEt4), "stop", SCDLGtitle)
      return
   end try
end tell

tell application "System Events"
   set frontProcessName to name of first application process whose frontmost is true
end tell

tell application frontProcessName
   activate
   show every record of current table


Wenn ich das Script dann aber sichern will, kommt die Meldung:
Syntaxfehler: Es wurde ein Zeilenende, etc. erwartet, aber ein "every" wurde gefunden.

Scheinbar hat er Schwierigkeiten, mit der Variabel für die application den FileMaker-typischen Befehl zu erkennen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
woodpecker
•--->
•--->


Anmeldedatum: 12.10.2010
Beiträge: 150
Wohnort: Roggentin/Rostock

BeitragVerfasst am: 17.02.2012 - 16:37    Titel: Antworten mit Zitat

Das ist auch so noch nicht ganz richtig. Du musst Deinen tell-Block in eine string-Variable schreiben und dann den Block über

Code:
do shell script "osascript blabla"


ausführen. So wie unten in dem Beitrag zu sehen. Das müsste klappen.
Alle anderen Versuche sind zwecklos, weil AppleScript die Applikation zur Übersetzungszeit kennen muss. Das osascript übersetzt aber den String zur Laufzeit (etwa wie ein Interpreter).

Probier mal diese einfache Zeile aus, dann weisst Du was ich meine:

Code:
do shell script "osascript -e 'current date'"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Wolle-77
•--->
•--->


Anmeldedatum: 25.02.2003
Beiträge: 447
Wohnort: Geldern

BeitragVerfasst am: 17.02.2012 - 21:15    Titel: Antworten mit Zitat

Hallo zusammen,

Es geht auch alles viel besser, einfacher und schneller – ganz ohne Skriptwüste und OSA-Vergewaltigungen Wink

Und zwar über die App-ID (Bundle-Identifier):

Als Beispiel: tell application id "com.adobe.indesign" ist das Gleiche, aber eben versionsunabhängig wie das klassische tell application "Adobe InDesign CS5.5" – gilt dann für CS3, CS4, CS5, CS5.5 und bald CS6

Da ich kein FileMaker habe, schaut einfach mal in die Preferences, wie die Domäne des Produktes ist.

Und dann eben einfach

Code:
tell app id "com.xxx.filemaker"

eingeben, kompilieren lassen und gut is' Smile
_________________
Martin Wolter
--
Apple rocks the planet!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
woodpecker
•--->
•--->


Anmeldedatum: 12.10.2010
Beiträge: 150
Wohnort: Roggentin/Rostock

BeitragVerfasst am: 17.02.2012 - 21:45    Titel: Antworten mit Zitat

Hallo Martin,
im Prinzip nicht schlecht, das Problem ist nur das er die Domäne erst zur Laufzeit ermitteln will. So wie ich es verstanden habe, will er ein universelles Script schreiben, was immer läuft. Egal ob FileMaker Pro, FileMaker Pro Advanced oder FM Server installiert ist. Die Domäne ist meines Wissens für die verschiedenen Produkte unterschiedlich. Aber das sollte auch zu lösen sein.

Für FM Pro Advanced ist es schon mal:

Code:
com.filemaker.client.advanced


Gruß woodpecker
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
MacTruth
•-->
•-->


Anmeldedatum: 10.11.2011
Beiträge: 92
Wohnort: Niederösterreich

BeitragVerfasst am: 18.02.2012 - 10:28    Titel: Antworten mit Zitat

Es ist wie woodpecker schreibt: das Script soll bei allen Filemaker-Versionen funktionieren, und deren Domäne ist dann doch unterschiedlich.
Lese ich die Domäne (über einen noch zu definierenden Befehl) aus und setze dafür ein Variable, schreibe also

Code:
set myFMid to "com.filemaker.client.advanced"
tell application id myFMid


dann kann er die Filemaker-typischen Befehle nicht erkennen (siehe wie oben berichtet)

Ich weiß nicht, ob ein Befehl denkbar wäre, der ihm sagt, er solle die application aktivieren, deren application id mit "com.filemaker." beginnt?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
woodpecker
•--->
•--->


Anmeldedatum: 12.10.2010
Beiträge: 150
Wohnort: Roggentin/Rostock

BeitragVerfasst am: 18.02.2012 - 15:42    Titel: Antworten mit Zitat

Hallo MacTruth,
den Namen der Domain zu ermitteln, sollte kein Problem sein. Du findest sie in dem Verzeichnis Library/Preferences. Deshalb kannst Du folgendes kleines Script benutzen:
Code:
set dir to POSIX path of (path to "pref")
set domain to do shell script "basename $(ls " & dir & "*filemaker*) | sed s/.plist//"

Die erste Zeile holt Dir den Namen des Verzeichnisses in die Variable dir.
Die zweite Zeile extrahiert aus dem Namen der plist-Datei genau den Domän-Namen.
Probiere das Script mal auf allen Systemen mit den verschiedenen FileMaker-Produkten aus. Das müsste klappen.

Gruß woodpecker
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
chebfarid
•-->
•-->


Anmeldedatum: 10.02.2007
Beiträge: 106
Wohnort: Milano

BeitragVerfasst am: 22.02.2012 - 00:17    Titel: Antworten mit Zitat

Oder mittels shell script auslesen ob und welche Version von FileMaker installiert ist und das Ergebnis benutzen, um das Programm in AppleScript anzusprechen:

Code:
set fm to (do shell script "find /Applications/ -name 'FileMaker*.app'")

set otid to text item delimiters
set text item delimiters to "/"
set fm to last text item of fm
set text item delimiters to otid

set fm to (characters 1 thru -5 of fm) as string

tell application fm to activate


Ciao
Farid
_________________
Abends lustig morgens triste
Das ist Leben von Artiste
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Wolle-77
•--->
•--->


Anmeldedatum: 25.02.2003
Beiträge: 447
Wohnort: Geldern

BeitragVerfasst am: 23.02.2012 - 20:08    Titel: Antworten mit Zitat

Hallo chebfarid,

Dein Script wiederum könnte man jedoch so optimieren und verkürzen:

Code:
set fm to text 1 thru -5 of (do shell script "find /Applications/ -name \"FileMaker*.app\" -maxdepth 2 -exec basename \"{}\" \\;")
tell application fm to activate


Erstens: Die manuelle Wandlung des eigentlichen Dateinamens geht besser mit basename – Du bist ja eh schon in der Shell. Das AS-Suchtausch kann man sich sparen (und ein Sichern der Delimiters ist ohnehin nicht immer nötig).

Zweitens: Niemals mehr characters 1 thru -5 as string benutzen, sondern in solchen Fällen immer direkt text 1 thru -5 of.

Sonst geschieht intern eine Aufnahme in eine Liste, die dann wieder gewandelt wird.


Aber im Grunde fürchte ich, steht MacTruth damit wieder am Anfang seines Problems, nämlich daß er das Programm nicht kompilieren kann, da er zur Entwicklungszeit in keinem gültigen tell steht.

Mir fällt da gerade noch was ein: Was ist mit

using terms of?
_________________
Martin Wolter
--
Apple rocks the planet!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
chebfarid
•-->
•-->


Anmeldedatum: 10.02.2007
Beiträge: 106
Wohnort: Milano

BeitragVerfasst am: 24.02.2012 - 02:21    Titel: Antworten mit Zitat

Ciao Martin,
danke für die Korrekturen: stelle fest, daß ich, was die AS-Referenz angeht nicht ganz up to date bin und eher "nach Gehör fahre" Very Happy
Sehr gut das neue(?)
Code:
text 1 thru -5 of ...

Und natürlich hast Du recht, auch mein Ansatz ist keine Lösung.
Was jedoch gehen sollte, ist drei(oder mehr) externe Scripts für "FM Pro", "FM Pro Advanced", "FM irgendwas" vorzubereiten, die entsprechend dem Ergebnis des Terminal- Find-Befehls aufgerufen werden.

Also: Hauptscript führt Terminalsuche aus
-> Beispielergebnis: "FileMaker Pro Advanced"
-> ruft Script auf, das sich an FMPro Advanced wendet ...

Ciao
Farid
_________________
Abends lustig morgens triste
Das ist Leben von Artiste
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Wolle-77
•--->
•--->


Anmeldedatum: 25.02.2003
Beiträge: 447
Wohnort: Geldern

BeitragVerfasst am: 24.02.2012 - 20:06    Titel: Antworten mit Zitat

Hallo Farid,

Zu dem text 1 thru -1 usw... Ob das neu ist oder jahrelang von jedem falsch gelernt wurde, kann ich gar nicht sagen. Jedenfalls ist schon mindestens 5 Jahre alt, wenn nicht noch älter.

Und ich meine sogar, ich hätte das hier im Forum mal vom guten Skeeve kennengelernt.

Wenn Du mal einen Performance-Test anstellst, weiß man, warum manche Skripte früher einfach viel zu lange liefen, viele zu viele AppleEvents verursachten ...
_________________
Martin Wolter
--
Apple rocks the planet!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X 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