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

Classic Netscape ansprechen unter OS X - will irgendwie nich

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


Anmeldedatum: 26.04.2002
Beiträge: 79

BeitragVerfasst am: 04.06.2002 - 18:03    Titel: Classic Netscape ansprechen unter OS X - will irgendwie nich Antworten mit Zitat

Hilfe!!

bevor ich ganz verzweifle ...

inspiriert von raboe's und Snow's Thread zum Thema "Aktive Programme auflisten" habe ich auch ein bisschen mit den vorgeschlagenen Lösungen (URL aus Browserfenster holen) experimentiert. (unter OS X)

Folgendes Problem hat sich bei mir leider ergeben & ich habe keine Idee warum das schiefläuft:

Ich ermittle den Browser eines bestimmten Typs ( z.B. "MOSS" )


set currentBrowser to name of (every application process whose creator type is BrowserTyp))

und dann versuche ich ihn anzusprechen:

tell app currentBrowser ...

Klappt aber nicht - wahlweise habe ich auch versucht, die Variable currentBrowser vorher zu einem String zu coercen - aber das geht auch nicht.

Als Ergebnis kommt beim tell nämlich leider entweder nur "Netscape Communicator" mit verschlucktem Trademakzeichen oder "Netscape Communicator\\u2122" an - und von beidem fühlt NS sich nicht angesprochen.

Als weiteren Test habe ich dann noch folgendes versucht:

set currentBrowser to "Netscape Communicatorô"
tell app currentBrowser ...

geht aber auch nicht.

das einzige was funktioniert ist

tell app "Netscape Communicatorô" ...

(also ohne Variable).

Hat jemand eine Idee, warum das so ist? Ich habe ein paar Hinweise darauf gefunden, dass man der property "name" von "process" fehlerhafterweise die class "international text" zugewiesen hat (steht auch so im Dictionary des Finders) - das würde das verschlucken des Sonderzeichens erklären - aber wie kann ich das umgehen?

Vielen Dank!

Daisy

(OS X D, 10.1.4, Devtools aus dem April)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1955
Wohnort: Deiningen

BeitragVerfasst am: 09.06.2002 - 19:26    Titel: Classic Netscape ansprechen unter OS X Antworten mit Zitat

Hallo Daisy,

ich denke, folgender Artikel ist was für dich:

http://members.lycos.co.uk/scripting/applescript/doubletell.html

Dort ist die Problematik recht gut erklärt.

Statt der Double-Tell<-Methode kann man jetzt aber auch

using terms from "AppName"

anwenden.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com


Zuletzt bearbeitet von Snow am 22.02.2003 - 17:02, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Daisy
•-->
•-->


Anmeldedatum: 26.04.2002
Beiträge: 79

BeitragVerfasst am: 10.06.2002 - 12:01    Titel: Classic Netscape ansprechen unter OS X Antworten mit Zitat

Hallo Snow,

vielen Dank für deine Antwort.
Ich hätte vielleicht etwas mehr von dem script posten sollen. Das mit dem "using terms from .." war mir schon klar, aber das ist hier nicht der Knackpunkt.
Prinzipiell sollte man ja denken, dass das geht:

tell application "Finder"
set test1 to (every application process whose creator type is "MOSS" )
set test to item 1 of test1
end tell

-- hab's hier mal mit doubletell versucht:
tell application "Netscape-Communicatorô" to tell test
activate
end tell

Geht aber nicht - es ist schon so, dass AS leider bei Prozessnamen immer (nicht nur bei "Netscape Communicatorô" s.u.) das Trademarkzeichen verliert. Wenn ich das Ergebnis folgender Zeile im Debugger anschaue:

tell application "Finder" to set NetcapeBrowsers to (every process whose creator type is "MOSS" )

steht da folgendes:
NetscapeBrowsers: {process "Netscape Communicator" of application "Finder"}
obwohl das blöde Ding (nicht nur das App file sondern auch der Prozess) "Netscape Communicatorô" heisst.

Ich habe dann, um festzustellen, ob es sich um ein Netscape-Problem handelt, eine kleine ASS-Applikation gemacht und sie "XXXô" genannt. Da passiert das gleiche Sad(

Von einem anderen Board habe ich folgendes "work-around" bekommen, das auch funktioniert:

tell application "Finder"

set currentBrowsers to application file of (application processes whose creator type is "MOSS" )

if length of currentBrowsers = 1 then

set thisBrowser to displayed name of (currentBrowsers as alias) as text

end if

end tell

using terms from application "Netscape Communicatorô"

tell application thisBrowser
...
end tell

end using terms from


Arbeitet also mit dem Filenamen der Applikation , funktioniert auch, es ist aber trotzdem etwas unbefriedigend, nicht zu wissen, woran es eigentlich liegt.


Gruß,

Daisy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1955
Wohnort: Deiningen

BeitragVerfasst am: 10.06.2002 - 18:09    Titel: Classic Netscape ansprechen unter OS X Antworten mit Zitat

Hallo Daisy,

die Double-Tell-Methode oder auch "using terms from" dient ja nur dazu, dass man evtl. Versionen, die sich im Namen unterscheiden, trotzdem mit dem Script ansprechen kann.

Zum Kompilieren des Skripts muss immer einmal der richtige Name des Programms auftauchen, damit AppleScript die aete-Resource des Programms lesen kann.

Der Fehler an der von dir verwendeten "Double-Tell-Methode" dürfte sein, dass mit dem process "Netscape Communicatorô" weitergearbeitet werden soll, statt mit application. Hier zuerst nochmal dein Beispiel:

tell application "Finder"
set test1 to (every application process whose creator type is "MOSS" )
set test to item 1 of test1
end tell

-- hab's hier mal mit doubletell versucht:
tell application "Netscape Communicator™" to tell test
activate
end tell


Das Eventprotokoll zeigt dabei folgendes:

tell application "Finder"
get
every application process whose creator type = "MOSS"
--> { process "Netscape Communicator™" }
activate
end tell


Nun habe ich das gleiche etwas umgestaltet:

set creaType to "MOSS"
tell application "Finder" to the first process whose ¨
creator type is creaType as type class
set appNetscape to the result as 'class psn '
tell application "Netscape Communicator™" to ¨
tell appNetscape to ¨
activate


Das funktioniert dann auch. Das Eventprotokoll sieht so aus:

tell application "Finder"
get
process 1 whose creator type = 'class MOSS'
--> { process "Netscape Communicator™" }
get
process "Netscape Communicator™"
--> application "Netscape Communicator™"
end tell
tell application "Netscape Communicator™"
activate
end tell


Das war jetzt unter OS 9.1 mit AppleScript 1.6

Unter OS X scheitert es jedoch schon an der Coercion "as type class".
Aber das ist eigentlich gar nicht so das Problem, denn wir können hier ja "using terms from" benutzen.

Den Namen muss man ja leider in beiden Methoden zumindest einmal
richtig angeben.

Zum Trademark-Problem unter X:
Das könntest du evtl. so lösen:

set AppName to "Netscape Communicator™"
tell application "Finder"
set test to name of every application process ¨
whose creator type is "MOSS"
end tell
if test contains "Netscape Communicator" then
set tApp to AppName
end if
tell application tApp to activate


Das funktioniert auch unter X. Zum Aktivieren von Netscape reicht's.

Gruß
Peter
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
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