Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
raboe •->
Anmeldedatum: 29.11.2000 Beiträge: 13
|
Verfasst am: 20.05.2002 - 17:32 Titel: Aktive Programme auflisten |
|
|
Offene Programme auflisten ?
Wie erhalte ich eine Liste der im Finder aktiven Programme ?
Das ganze sollte in etwa so aussehen:
- Auflistung der aktiven Programme
- Wenn Name des Programmes in der Liste = "Internet Explorer" oder Ý"Netscape Communicator".......
- Aufruf eines FMPro Scripts (do script....)
Ein paar kleine Anhaltspunkte würden mir sehr helfen.
Vielen Dank für Eure infos
Beste Grüße raboe |
|
Nach oben |
|
|
Snow Administrator
Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 20.05.2002 - 19:51 Titel: Aktive Programme auflisten |
|
|
Hi raboe,
bei aktiven Programmen handelt es sich um 'processes'.
Hier ein kurzes Skript, das die aktiven, sichtbaren Programme aufzeigt.
tell application "Finder"
set appList to name of every application process whose visible is true
-- alternativ inklusive der Hintergrund-Prozesse
--set appList to name of every application process
choose from list appList with empty selection allowed
end tell _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Zuletzt bearbeitet von Snow am 22.02.2003 - 17:19, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
raboe •->
Anmeldedatum: 29.11.2000 Beiträge: 13
|
Verfasst am: 22.05.2002 - 02:43 Titel: Aktive Programme auflisten |
|
|
Hallo Snow,
erst mal vielen Dank für Deine schnelle Antwort.
Ich habe das Script mal etwas komplettiert, leider bin ich mir noch nicht sicher, ob das Script so auch wirklich problemlos funktioniert.
Ein Fehler ist mir sofort aufgefallen:
- nach einer wahren Vorgabe ("10") z.B.
if myBrowser is "10" then display dialog "Netscape ist geöffnet"
erscheint display dialog "Netscape ist geöffnet" immer doppelt.
Wie stell ich das ab.
Hier das ganze Script:
tell application "Finder"
set appList to creator type of every application process whose visible is true
set {MOSS, MSIE} to {0, 0}
repeat with theItem in appList
if appList contains "MOSS" then set MOSS to 1
if appList contains "MSIE" then set MSIE to 2
end repeat
set myBrowser to MOSS & MSIE as text
display dialog myBrowser
repeat with theItem in myBrowser
if myBrowser is "00" then display dialog "Kein Browser geöffnet!"
--FMPro Scriptaufruf
if myBrowser is "12" then display dialog "Netscape und Internet Explorer sind geöffnet!"
--FMPro Scriptaufruf
if myBrowser is "10" then display dialog "Netscape ist geöffnet"
--FMPro Scriptaufruf
if myBrowser is "02" then display dialog "Internet Explorer ist geöffnet!"
--FMPro Scriptaufruf
end repeat
end tell
Was hab ich hier vergessen oder unterschlagen.
Dankbar für jeden Hinweis.........
Gruß raboe
ps: Das ganze wird eine URL Datenbank auf FMPro Basis und natürlich Freeware. |
|
Nach oben |
|
|
Kurt •-->
Anmeldedatum: 04.12.2000 Beiträge: 21 Wohnort: Röthenbach a.d.P. bei Nürnberg
|
Verfasst am: 22.05.2002 - 08:21 Titel: Aktive Programme auflisten |
|
|
Hallo,
Zitat: | Wie stell ich das ab.
Hier das ganze Script:
tell application "Finder"
set appList to creator type of every application process whose visible is true
set {MOSS, MSIE} to {0, 0}
repeat with theItem in appList
|
Wozu durchläufst Du die Repeat Schleife ?
Ein einfaches
tell application "Finder"
set appList to creator type of every application process whose visible is true
set {MOSS, MSIE} to {false, false}
if appList contains "MOSS" then set MOSS to True
if appList contains "MSIE" then set MSIE to true
genügt. Du arbeitest besser mit MOSS und MSIE als boolean s.o.
Zitat: |
set myBrowser to MOSS & MSIE as text
display dialog myBrowser
repeat with theItem in myBrowser
|
nächste überfüssige repeat Schleife. Versuchs mit
if moss and msie then
-- beide browser geöffnet
else if msie then
-- IE geöffnet
else if moss then
-- Netsc. geöffnet
else
-- kein Browser geöffnet
end if
MfG Kurt |
|
Nach oben |
|
|
Snow Administrator
Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 22.05.2002 - 12:01 Titel: Aktive Programme auflisten |
|
|
Hi Kurt, hallo raboe,
ich benutze als Browser den Mozilla und bin damit nicht mit von der Partie.
Das hat mich zu der Überlegung veranlasst, was zu machen wäre, wenn man weitere Browser berücksichtigen möchte.
Im Prinzip ist die Methode mit den Booleans gut. Allerdings müssen, sobald es noch mehr Objekte werden, eine Unzahl an Kombinationen mit 'if' und 'else if' abgefragt werden.
Deshalb hier noch eine Version, die wieder Textwerte benutzt:
tell application "Finder"
set appList to creator type of every application process whose visible is true
set { MOSS, MSIE, iCab, MOZZ } to { "", "", "", "" }
if appList contains "MOSS" then set MOSS to ( "Netscape" & return)
if appList contains "MSIE" then set MSIE to ( "Internet Explorer" & return)
if appList contains "iCAB" then set iCab to ( "iCab" & return)
if appList contains "MOZZ" then set MOZZ to ( "Mozilla")
display dialog "Geöffnete Browser:" & return & return & MOSS & MSIE & iCab & MOZZ
end tell
Dass man es bei der Abfrage der Programme beim Creatorcode belässt, macht auch weiterhin Sinn. Es könnte ja sein, dass sich ein Programm inklusive Versionsnummer präsentiert (z.B. "Netscape 6", "Netscape Communicator™ = NS 4.x ). Bei der Verwendung des Creatorcodes ist es dann egal, welche Version geöffnet ist. _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Zuletzt bearbeitet von Snow am 22.02.2003 - 17:20, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
raboe •->
Anmeldedatum: 29.11.2000 Beiträge: 13
|
Verfasst am: 22.05.2002 - 12:49 Titel: Aktive Programme auflisten |
|
|
Ziel des ganzen ist es eigentlich den Benutzer bei mehreren
geöffneten Browsern zu einer Auswahl (in FMPro) zu bewegen.
Wenn nur ein Browser geöffnet ist wird ein weiteres Script von FMPro direkt ausgeführt.
z.B. so
if myBrowser is "123" then¨
tell application "FileMaker Pro"
tell database 1
do script "Mehrere_Browser_geoeffnet"
end tell
end tell
Das komplette Script funktioniert ohne die display dialog Anweisungen schnell und problemlos.
Aber die eigentliche Frage:
- benötige ich die erste Schleife eigentlich ?
Ich werde das Script nochmal auf Textwerte umarbeiten und zum besseren Verständnis nochmals posten.
bis denne Gruß raboe |
|
Nach oben |
|
|
Snow Administrator
Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 22.05.2002 - 13:01 Titel: Aktive Programme auflisten |
|
|
Hallo raboe,
du benötigst keine der beiden Schleifen!
Probier' dein Skript doch einfach mal ohne die Schleifen aus:
tell application "Finder"
set appList to creator type of every application process whose visible is true
set { MOSS, MSIE } to { 0, 0 }
if appList contains "MOSS" then set MOSS to 1
if appList contains "MSIE" then set MSIE to 2
set myBrowser to MOSS & MSIE as text
if myBrowser is "00" then display dialog "Kein Browser geöffnet!"
--FMPro Scriptaufruf
if myBrowser is "12" then display dialog "Netscape und Internet Explorer sind geöffnet!"
--FMPro Scriptaufruf
if myBrowser is "10" then display dialog "Netscape ist geöffnet"
--FMPro Scriptaufruf
if myBrowser is "02" then display dialog "Internet Explorer ist geöffnet!"
--FMPro Scriptaufruf
end tell _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Zuletzt bearbeitet von Snow am 22.02.2003 - 17:21, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Snow Administrator
Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 22.05.2002 - 13:39 Titel: Aktive Programme auflisten |
|
|
Hi raboe,
ich knüpfe jetzt mal an meine erste Antwort an, denn ich muss zugeben, dass ich mittlerweile das Ziel aus den Augen verloren hatte.
'choose from list' wäre immer noch ganz praktisch, oder?
Nur dürfen wir natürlich nicht aus der appList auswählen, sondern müssen erst eine Liste erstellen, die nur evtl. geöffnete Browser enthält. Desweiteren soll die Option zum Auswählen ja nur erscheinen, wenn es mehr als 1 Eintrag in dieser neuen Liste gibt.
Im folgenden Skript, wird der einzige geöffnete Browser oder der ausgewählte Browser aktiviert. Das wäre dann die Stelle für deine FileMaker-Aktionen.
set BrowserList to { }
tell application "Finder"
set appList to creator type of every application process whose visible is true
if appList contains "MOSS" then set the end of BrowserList to "Netscape"
if appList contains "MSIE" then set the end of BrowserList to "Internet Explorer"
if appList contains "iCAB" then set the end of BrowserList to "iCab"
if appList contains "MOZZ" then set the end of BrowserList to "Mozilla"
end tell
set PrgAnzahl to count of BrowserList
if PrgAnzahl > 1 then
choose from list BrowserList with prompt "Wählen Sie Ihren bevorzugten Browser:"
-- false ist der Wert, wenn man auf Abbrechen klickt
if result is not false then
set tApp to item 1 of the result
tell application tApp to activate
end if
else
set tApp to item 1 of BrowserList
tell application tApp to activate
end if
Das war also nochmal ein Skript mit 'choose from list'.
Oder muss die Auswahl unbedingt erst in FileMaker erfolgen? _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Zuletzt bearbeitet von Snow am 22.02.2003 - 17:23, insgesamt 2-mal bearbeitet |
|
Nach oben |
|
|
raboe •->
Anmeldedatum: 29.11.2000 Beiträge: 13
|
Verfasst am: 22.05.2002 - 14:01 Titel: Aktive Programme auflisten |
|
|
Hallo Snow,
eigentlich ist es egal ob die Browserauswahl per AppleScript oder via FileMaker geschieht.
Wichtig ist nur das das dem Benutzer eine Option bei mehreren Browsern gegeben wird.
Das Script ist eigentlich genau die Variante die ich bezwecken wollte.
Und es funktioniert sowohl beim öffnen einer URL oder beim auslesen einer URL.
Wie Du das Ganze in der Kürze so klein gekriegt hast bleibt mir ein Rätsel.
Da sieht man eben, das ich gedanklich in AppleScript noch nicht sehr weit bin.
Darf ich Dir nach Fertigstellung der URL Datenbank eine Kopie mailen ? |
|
Nach oben |
|
|
Snow Administrator
Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 22.05.2002 - 14:06 Titel: Aktive Programme auflisten |
|
|
Zitat: |
Darf ich Dir nach Fertigstellung der URL Datenbank eine Kopie mailen ? |
Na klar! Nichts dagegen! _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
|
raboe •->
Anmeldedatum: 29.11.2000 Beiträge: 13
|
Verfasst am: 22.05.2002 - 14:57 Titel: Aktive Programme auflisten |
|
|
Eine Frage noch!
Gehen wir davon aus das Netscape (4.7.9) und Internet Explorer geöffnet (und nicht ausgeblendet) sind.
Danach öffne ich die URL Datenbank und rufe das Script "Browserauswahl auf.
Aus der Liste wähle ich Netscape.
Weshalb fragt mich Netscape dann nach der Pfadangabe.
Bei Auswahl von Internet Explorer aus der Liste kommt das nicht vor.
Hast Du dafür eine Erklärung ? -- oder kann das auch mit Mozilla, iCab ... passieren ? |
|
Nach oben |
|
|
raboe •->
Anmeldedatum: 29.11.2000 Beiträge: 13
|
Verfasst am: 22.05.2002 - 15:30 Titel: Aktive Programme auflisten |
|
|
Kommando zurück !
wie kann man nur so blöd sein. (Ich bin gemeint)
Natürlich setzt AppleScript die korrekte Schreibweise des Programme voraus.
Im Fall Netscape wäre das:
if appList contains "MOSS" then set the end of BrowserList to "Netscape Communicatorô"
-- nicht "Netscape"
Das ist aber genau das, was ich vermeiden wollte.
Denn wenn der User den Namen eines Browsers ändert, fragt AppleScript nach der Pfadangabe |
|
Nach oben |
|
|
Snow Administrator
Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 22.05.2002 - 15:43 Titel: Aktive Programme auflisten |
|
|
Wenn der Name nicht 100% genau stimmt, muss man das Programm zuerst einmal auswählen. Das ist ja jetzt beim Netscape der Fall.
Die 4er Version heißt "Netscape Communicator™", die 6er Version "Netscape 6".
Man muss das Programm aber nur beim ersten Skriptstart auswählen. Das Skript merkt sich diese Verknüpfung dann.
Diese Abfrage taucht erst wieder auf, wenn du im Skript was geändert hast, und es neu kompiliert wird.
Du kannst aber auch die entsprechende Abfrage so umbauen:
if appList contains "MOSS" then
set appName to name of every application process whose creator type is "MOSS"
set the end of BrowserList to appName
end if
Wenn du nun Befehle an eine Netscape-Version schicken willst, musst du es folgendermaßen machen.:
if tApp = appName then
using terms from application "Netscape Communicator™"
tell application appName
set NetURL to URL of front window
end tell
end using terms from
end if
Du kannst aber nur Befehle verwenden, die in beiden Versionen vorhanden sind. Ist klar, oder?
Netscape 6 kann natürlich mit Befehlen, die nur in den 4er Versionen vorhanden sind nichts anfangen (z.B. get window info). _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Zuletzt bearbeitet von Snow am 22.02.2003 - 17:24, insgesamt 2-mal bearbeitet |
|
Nach oben |
|
|
Snow Administrator
Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 22.05.2002 - 16:14 Titel: Aktive Programme auflisten |
|
|
Auch Kommando zurück!
if tApp = appName
bringt einen Fehler sobald man einen anderen Browser als Netscape auswählt, da dann die Variable appName gar nicht existiert.
Ich hab's jetzt mal so gemacht:
if PrgAnzahl > 1 then
choose from list BrowserList with prompt "Wählen Sie Ihren bevorzugten Browser:"
-- false ist der Wert, wenn man auf Abbrechen klickt
if result is not false then
set tApp to item 1 of the result
if tApp = "Internet Explorer" then
getIE_URL()
else if tApp = "Netscape Communicator™" or tApp = ¨
"Netscape 6" or tApp = "Mozilla" or tApp = "iCab" then
get_MOSS_URL(tApp)
else
display dialog "\"" & tApp & "\"" & ¨
" wird vom Skript noch nicht unterstützt." buttons { "OK" } ¨
default button 1 with icon stop
return
end if
end if
else
set tApp to item 1 of BrowserList
tell application tApp to activate
end if
on get_MOSS_URL(tApp)
using terms from application "Netscape Communicator™"
tell application tApp
set NetURL to URL of front window
end tell
end using terms from
end get_MOSS_URL
Es geht ja noch um die URL des vordersten Fensters, nehme ich an. Für IE haben wir das ja schon in einem anderen Thread (den entsprechenden Skriptteil habe ich in den Hanlder "getIE_URL()" verfrachtet). Für Netscape, Mozilla und iCab funktioniert's absolut gleich, deshalb die obige Lösung mit einem Handler für alle 3 Browservarianten. _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Zuletzt bearbeitet von Snow am 22.02.2003 - 17:26, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
raboe •->
Anmeldedatum: 29.11.2000 Beiträge: 13
|
Verfasst am: 22.05.2002 - 20:11 Titel: Aktive Programme auflisten |
|
|
Hallo Snow,
das Script ist gedanklich eigentlich schon fast fertig.
Einige Sachen hab ich getestet und verändert.
z.B. spielt es keine Rolle, ob der User den Namen in der Infobox von Netscape (oder anderen) umbenennt.
Hauptsache die Bezeichnung in:
-- if appList contains "MOSS" then set the end of BrowserList to "Netscape Communicatorô"
ist korrekt gesetzt.
Für Dich als Mozilla User habe ich allerdings eine schlechte Nachricht.
Mozilla fehlt der ScriptBefehl "ListWindows" und ohne den kann ich das vorderste Fenster nicht ansprechen.
Der Befehl - set myWindow to the front window gibt bei mehreren Fenstern nicht das vorderste zurück, sondern das zuerst geöffnete.
Wenn Du aber eine Idee hast wie das doch gehen könnte...
Gruß raboe |
|
Nach oben |
|
|
|