| 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 | 
		 | 
	
	
		  | 
	
	
		 |