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