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

Aktive Programme auflisten
Gehe zu Seite 1, 2  Weiter
 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
raboe
•->
•->


Anmeldedatum: 29.11.2000
Beiträge: 13

BeitragVerfasst am: 20.05.2002 - 17:32    Titel: Aktive Programme auflisten Antworten mit Zitat

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


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 20.05.2002 - 19:51    Titel: Aktive Programme auflisten Antworten mit Zitat

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


Anmeldedatum: 29.11.2000
Beiträge: 13

BeitragVerfasst am: 22.05.2002 - 02:43    Titel: Aktive Programme auflisten Antworten mit Zitat

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


Anmeldedatum: 04.12.2000
Beiträge: 21
Wohnort: Röthenbach a.d.P. bei Nürnberg

BeitragVerfasst am: 22.05.2002 - 08:21    Titel: Aktive Programme auflisten Antworten mit Zitat

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


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 22.05.2002 - 12:01    Titel: Aktive Programme auflisten Antworten mit Zitat

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


Anmeldedatum: 29.11.2000
Beiträge: 13

BeitragVerfasst am: 22.05.2002 - 12:49    Titel: Aktive Programme auflisten Antworten mit Zitat

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


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 22.05.2002 - 13:01    Titel: Aktive Programme auflisten Antworten mit Zitat

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


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 22.05.2002 - 13:39    Titel: Aktive Programme auflisten Antworten mit Zitat

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


Anmeldedatum: 29.11.2000
Beiträge: 13

BeitragVerfasst am: 22.05.2002 - 14:01    Titel: Aktive Programme auflisten Antworten mit Zitat

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


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 22.05.2002 - 14:06    Titel: Aktive Programme auflisten Antworten mit Zitat

Zitat:

Darf ich Dir nach Fertigstellung der URL Datenbank eine Kopie mailen ?


Na klar! Nichts dagegen!
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
raboe
•->
•->


Anmeldedatum: 29.11.2000
Beiträge: 13

BeitragVerfasst am: 22.05.2002 - 14:57    Titel: Aktive Programme auflisten Antworten mit Zitat

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


Anmeldedatum: 29.11.2000
Beiträge: 13

BeitragVerfasst am: 22.05.2002 - 15:30    Titel: Aktive Programme auflisten Antworten mit Zitat

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


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 22.05.2002 - 15:43    Titel: Aktive Programme auflisten Antworten mit Zitat

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


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 22.05.2002 - 16:14    Titel: Aktive Programme auflisten Antworten mit Zitat

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


Anmeldedatum: 29.11.2000
Beiträge: 13

BeitragVerfasst am: 22.05.2002 - 20:11    Titel: Aktive Programme auflisten Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Forum Alle Zeiten sind GMT + 2 Stunden
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
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