| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen   | 
	
	
	
		| Autor | 
		Nachricht | 
	
	
		Jens Hoffmann •--->
  
 
  Anmeldedatum: 07.05.2001 Beiträge: 175
 
  | 
		
			
				 Verfasst am: 26.07.2001 - 16:41    Titel: Hintergrund-Script beenden | 
				     | 
			 
			
				
  | 
			 
			
				Hi
 
Ich habe ein Script als Hintergrund-Programm (-> mit ResEdit gemacht) laufen, welches über BBEdit schwebt (floating above -> DialogDirector). Wenn ich nun BBEdit beende ohne vorher das Script zu beenden, läuft es weiter im Hintergrund und führt zu Problemen (z.B. fährt der Mac nicht mehr runter). Gibt es eine Möglichkeit, ein Script durch ein anderes zu beenden (shutdownitems), oder abzufragen, ob BBEdit (ein Programm generell) beendet wird? Das Script befindet sich ständig in einer repeat-Schleife, wie sie in normalerweise für DialogDirector benutzt wird.
 
Grüße, Jens | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		Snow Administrator
  
  
  Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
  | 
		
			
				 Verfasst am: 28.07.2001 - 19:30    Titel: Hintergrund-Script beenden | 
				     | 
			 
			
				
  | 
			 
			
				Hallo Jens,
 
 
probier mal folgendes aus:
 
 
tell application "Finder"
 
set ProzListe to name of processes
 
end tell
 
 
if ProzListe contains "DeinProgramm" then
 
tell application "DeinProgramm" to quit
 
end if
 
 
Natürlich musst du noch den Namen deines Programms ergänzen. _________________ Peter
 
-
 
Fischer-Bayern.de|Shadetreemicro.com | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		Jens Hoffmann •--->
  
 
  Anmeldedatum: 07.05.2001 Beiträge: 175
 
  | 
		
			
				 Verfasst am: 30.07.2001 - 10:38    Titel: Hintergrund-Script beenden | 
				     | 
			 
			
				
  | 
			 
			
				Hallo Snow,
 
das war's leider nicht. Ist es nicht so, dass ein Script gar nicht scriptbar ist? Es hat zumindestens kein Verzeichnis, also auch keinen quit-Befehl. Vielleicht gibt es aber eine andere Lösung?
 
Danke, Jens | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		macgix •--->
  
  
  Anmeldedatum: 13.12.2000 Beiträge: 206 Wohnort: K–ln
  | 
		
			
				 Verfasst am: 30.07.2001 - 12:45    Titel: Hintergrund-Script beenden | 
				     | 
			 
			
				
  | 
			 
			
				Hallo Jens
 
 
Füge mal folgenden Handler in Dein Hintergrundskript ein:
 
 
on quit
 
 continue quit
 
end quit
 
 
Dann sollte es auch mit dem Beenden durch ein zweites Skript klappen wie Peter es beschrieben hat. Ein sichtbares Stay-Open Skript läßt sich auch mit "Befehl-Umschalttaste-Q" beenden, wenn man es in den Vordergrund holt und es sich nicht mit "Befehl-Q" beenden läßt, da der "Quit-Handler" fehlt, ein Unsichtbares natürlich nicht...
 
 
Solange das Skript aber in seiner Repeat-Schleife rumwuselt, dürfte wohl kaum mehr eine idle-Phase eintreten, die es erlaubt, das Quit-Event so zu senden, dass es auch beim Hintergrundskript ankommt. Da sollte eine Bedingung hinein, die einen bestimmten Status auf dem Rechner prüft (z.B. das Vorhandensein einer Textdatei im Preferences- oder Application-Support Ordner) und wenn der Status erfüllt ist, die Schleife verlässt und das Programm dann selbst beendet:
 
 
--
 
 
repeat ..
 
try
 
get "Dateipfad als Text" as alias
 
on error
 
exit repeat
 
end try
 
... Deine Aktionen hier hin!
 
end repeat
 
 
quit
 
 
--
 
 
Gruß,
 
 
Thomas _________________ [macgix] | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		Jens Hoffmann •--->
  
 
  Anmeldedatum: 07.05.2001 Beiträge: 175
 
  | 
		
			
				 Verfasst am: 02.08.2001 - 15:42    Titel: Hintergrund-Script beenden | 
				     | 
			 
			
				
  | 
			 
			
				Hi macgix + snow
 
Ich habe das mal so probiert und einen Busfehler mit folgendem Systemfehler bekommen. Nach dem Neustart liess sich das Applet nicht mehr öffnen,  "da ein Programmfehler auftrat".
 
 
Hmm, nette Tipps gebt Ihr ja da ;-)
 
 
Aber im Ernst, während der Entwicklung dieses Tools für BBEdit bekomme ich regelmäßig diese Abstürze, manchmal stürzt das OS danach beim Hochfahren nochmal ab (irgendwas mit dem "Hilfe Center" soll nicht stimmen). Es kam auch schon vor, dass es einen Absturz gab, nachdem ich an einem Script gearbeitet habe. Zum Zeitpunkt des Absturzes lief jedoch nur der Skripteditor.
 
Ist das eigentlich normal? Kann es an diversen OSAXen liegen?
 
 
Zum Thread: Ist es egal, welche Textdatei ich auf das Vorhandensein prüfe? Geht es nur darum, Zeit für die quit-Abfrage zu schinden?
 
 
Grüße, Jens | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		macgix •--->
  
  
  Anmeldedatum: 13.12.2000 Beiträge: 206 Wohnort: K–ln
  | 
		
			
				 Verfasst am: 02.08.2001 - 18:07    Titel: Hintergrund-Script beenden | 
				     | 
			 
			
				
  | 
			 
			
				Hallo Jens,
 
 
klingt ja schaurig. Ladt Dir mal
 
 
den Mac Repair Pack inkl. PDF-Anleitung und SW
 
 
runter und wende ihn an. Danach sieht die Welt wieder besser aus. Ausserdem sollten ALLE Softwarebestandteile Deines Systems auf dem NEUESTEN Stand sein!!! - Alles andere ist unvernünftig.
 
 
Der Macwelt-Redaktion jedenfalls hat der "Aufräumer" spontan hervorragend gefallen und auf meinen Rechern sorgt er immer wieder für "Ruhe nach dem Sturm" - Abstürze sind hier äußerst selten! - Defekte Schriften sind im übrigen schlimmer als Viren, besonders die VT 102.
 
 
 
Good luck!
 
 
Thomas _________________ [macgix] | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		Jens Hoffmann •--->
  
 
  Anmeldedatum: 07.05.2001 Beiträge: 175
 
  | 
		
			
				 Verfasst am: 03.08.2001 - 10:56    Titel: Hintergrund-Script beenden | 
				     | 
			 
			
				
  | 
			 
			
				Hallo Thomas
 
Klingt gut, der MacRepair-Plan. Mal sehen, wie mein OS danach funzt... Noch ein Hinweis: Die Programmversionen im Aliasordner "Repair Utilities" stimmen nicht mit denen in der Anleitung überein. Könnte verwirren.
 
 
Du hast mir aber noch nicht auf die Frage geantwortet, ob es beim Prüfen nach einer Textdatei, darum geht, Zeit für die quit-Abfrage zu schinden und ob ich wirklich beliebige Dateien nehmen kann (solche die immer vorhanden sind, nehme ich an).
 
 
Danke und Grüße, Jens | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		macgix •--->
  
  
  Anmeldedatum: 13.12.2000 Beiträge: 206 Wohnort: K–ln
  | 
		
			
				 Verfasst am: 03.08.2001 - 21:58    Titel: Hintergrund-Script beenden | 
				     | 
			 
			
				
  | 
			 
			
				Hallo Jens
 
 
(Danke für den Hinweis mit den Versionen. Einfach immer die neuesten verwenden stimmt schon.)
 
 
Also das Skript, das im Hintergrund läuft, sieht so aus:
 
 
on idle
 
 
	set tPath to ((path to desktop) as text) & "checkfile"
 
 
	 repeat
 
			tell application "Finder" to if exists file tPath then exit repeat
 
	 end repeat
 
 
	 quit
 
 
	 return 3
 
 
end idle
 
 
on quit
 
	 continue quit
 
end quit
 
 
und das Skript, das zum Beenden des Ersten führt, so:
 
 
on run
 
 
	 set tPath to ((path to desktop) as text) & "checkfile"
 
Ý 
 
	 set tRef to open for access file tPath with write permission
 
	 close access tRef
 
 
end run
 
 
Speichere Ersteres als "Stay Open"-Applikation und Letzteres als normale Applikation. Starte das Erste, dann warte ein wenig und starte dann das Zweite. Nach spätestens drei Sekunden beendet sich das erste Skriptprogramm von selbst.
 
 
Ob's allerdings auch funktioniert, wenn das erste Skript eine "faceless background application (appe)" ist, musst Du noch ausprobieren.
 
 
Let it quit,
 
 
Thomas _________________ [macgix] | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		macgix •--->
  
  
  Anmeldedatum: 13.12.2000 Beiträge: 206 Wohnort: K–ln
  | 
		
			
				 Verfasst am: 04.08.2001 - 01:02    Titel: Hintergrund-Script beenden | 
				     | 
			 
			
				
  | 
			 
			
				Und so ist das "idleScript" nahezu perfekt:
 
 
on idle
 
	 
 
	 set tPath to ((path to desktop) as text) & "checkfile"
 
	 
 
	 tell application "Finder" to if exists file tPath then delete file tPath
 
	 
 
	 repeat
 
			tell application "Finder" to if exists file tPath then exit repeat
 
	 end repeat
 
	 
 
	 tell application "Finder" to delete file tPath
 
	 
 
	 quit
 
	 
 
	 return 3
 
	 
 
end idle
 
 
 
on quit
 
	 continue quit
 
end quit
 
 
 
Wenn Jon's Commands installiert sind kann man statt:
 
 
tell application "Finder" to if exists file tPath then delete file tPath
 
 
und
 
 
tell application "Finder" to delete file tPath
 
 
auch folgendes schreiben, um das "checkfile" direkt zu löschen:
 
 
	 try
 
			deleteFile tPath
 
	 end try
 
 
und für's zweite Vorkommen genügt:
 
 
			deleteFile tPath
 
 
Dann bleibt der Papierkorb verschont.
 
 
Thomas _________________ [macgix] | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		macgix •--->
  
  
  Anmeldedatum: 13.12.2000 Beiträge: 206 Wohnort: K–ln
  | 
		
			
				 Verfasst am: 04.08.2001 - 01:36    Titel: Hintergrund-Script beenden | 
				     | 
			 
			
				
  | 
			 
			
				So, nun ist es raus:
 
 
Ich habe das idleScipt aus dem letzten Posting mit ResEdit in zweifacher Hinsicht manipuliert.
 
 
1.) Mit INFO den Dateityp auf "appe" gesetzt.
 
 
2.) Die Option "Background only" in ALLEN Size-Ressourcen aktivert.
 
 
Danach habe ich die nun entstandene "Systemerweiterung" auf das Icon des geschlossenen Systemordners gezogen, die Findermeldung mit "Ja" bestätigt und so im Systemerweiterungsordner installiert.
 
 
Danach den Rechner schnell neugestartet und mit folgendem Skript die laufenden Prozesse aufgelistet:
 
 
tell application "Finder"
 
	 return name of processes
 
end tell
 
 
--> {"idleScript.scpt", "Script Debugger"}
 
 
Dann das "createQuitFileScript.scpt" gestartet, gewartet bis die Textdatei wieder vom Schreibtisch verschwunden war und erneut die Prozesse wie zuvor geprüft. "idleScript.scpt"-Systemerweiterung war AUS:
 
 
--> {"Script Debugger"}
 
 
 
Also, es funzt wie es soll!
 
 
Thomas _________________ [macgix] | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		 |