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

wie kehre ich zum on idle-handler zurück?
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 11.08.2007 - 13:56    Titel: wie kehre ich zum on idle-handler zurück? Antworten mit Zitat

Ich möchte ein Script erstellen, das ständig läuft, um gewisse Dinge zu überwachen.
Um zu verhindern, dass dieses nicht versehentlich beendet wird, greife ich auf den on quit-handler zurück. Doch ich schaffe es nicht, nach einer Abfrage, ob wirklich beendet werden soll, zum on idle-Handler zurückzukehren, falls dies gewünscht ist. Der on idle-Handler wird dann nur einmalig ausgeführt????
Was mache ich falsch?

on idle
   activate
   display dialog "jupp" giving up after 1
   return 2
end idle

on quit
   if button returned of ¬
      (display dialog "Really quit?" buttons {"No", "Quit"} default button {"No"}) ¬
         is "Quit" then
      continue quit
   else
      idle --< was muss ich tun, damit der idle-handler wieder aktiv wird?
   end if
end quit
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1529
Wohnort: Olten-CH

BeitragVerfasst am: 11.08.2007 - 15:31    Titel: Antworten mit Zitat

Keine Ahnung ob sinn macht, jedenfalls läuft er so ewig weiter, ist dennoch beendbar
cave! nur OS9 getestet
EDIT: auch OSX10.4.10 hat dieses Laminat überlebt
hat Folgendes geschrieben:
on idle
   activate
   display dialog "jupp" giving up after 1
   my idlQuittER() --oooo
   return 2
end idle

on quit
   my idlQuittER() ----If the script includes a Quit handler, the statements in the handler are run before the application quits.
   --............
end quit

on idlQuittER() --oooo
   activate
   display dialog "Ist jetzt 2. idle am laufen ? Der handler könnte auch das eigene PROGRAMM aufrufen, nur so als Idee" giving up after 5
   if button returned of ¬
      (display dialog "Really quit?" buttons {"No", "Quit"} default button {"No"}) ¬
         is "Quit" then
      --continue quit
   else
      idle --< was muss ich tun, damit der idle-handler wieder aktiv wird?
      activate me --<--Effekt?
   end if
end idlQuittER

_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 11.08.2007 - 17:51    Titel: Antworten mit Zitat

spirigwi hat Folgendes geschrieben:
Keine Ahnung ob sinn macht ...

Weniger. Was soll der Eigenbau-Quit-Handler-Aufruf im Idle-Handler?
Das Problem wird durch deine Methode nur verschärft.

Die Problematik ist aber doch noch etwas anders, als ich geschildert habe: Das Programm bleibt am leben, wenn man den Quit-Handler abbricht und nicht voll durchzieht (ohne "continue quit"), und auch der idle-Handler greift wieder, allerdings erst, wenn man beispielsweise kurz mal den Finder aktiviert und anschliessend wieder das Script.
Das muss doch auch anders gehen.

Dieses Konstrukt reicht also prinzipiell aus, bis auf die Hand-Switcherei zwischen Finder und Script, die nötig ist, um den idle-Handler wieder ins Leben zurückzubringen:
on idle
   beep
   return 2
end idle

on quit
   if button returned of ¬
      (display dialog "Really quit?" buttons {"Continue", "Quit"} default button {"Continue"}) ¬
         is "Quit" then continue quit
end quit
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 13.08.2007 - 10:34    Titel: Antworten mit Zitat

Weiss da wirklich niemand etwas?
So kann's doch nicht sein. Wird doch von Apple so beschrieben.
Aber durch Einbau des on quit-Handlers erreiche ich so ja genau das Gegenteil von dem, was ich will: Der on idle-Handler arbeitet nach Abbruch des Quit-Befehls nicht weiter. Zumindes nicht so ohne weiteres.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Wolle-77
•--->
•--->


Anmeldedatum: 25.02.2003
Beiträge: 449
Wohnort: Geldern

BeitragVerfasst am: 13.08.2007 - 11:06    Titel: Antworten mit Zitat

Also ich glaube, Du hast da einen Fehler entdeckt – seit wann der in AS steckt, weiß ich nicht. Aber in 1.10.7 ist er enthalten – unter 1.9.2 hat noch alles funktioniert (dafür anderes nicht).

Ich weiß aber nicht, wie wir es Apple mitteilen. Auch ich bekomme den handler nicht ans Laufen. Ich habe ihn auch schon ewig nicht mehr benutzt – aber mein früheres Programm hat so gelaufen und tut es jetzt auch nicht mehr.


Also, für mich sieht das nach einem Fehler in der aktuellen Version aus.
_________________
Martin Wolter
--
Apple rocks the planet!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jürgen Venne
•->
•->


Anmeldedatum: 19.08.2005
Beiträge: 14
Wohnort: 46519 Alpen-Veen

BeitragVerfasst am: 13.08.2007 - 11:50    Titel: Antworten mit Zitat

Ist das Applescript-Studio Projekt?

Ich kriegs im Scripteditor nicht ans laufen.

Aber versuch doch mal:

Code:
on idle
   activate
   display dialog "jupp" giving up after 1
   return 2
end idle

on quit
   if button returned of ¬
      (display dialog "Really quit?" buttons {"No", "Quit"} default button {"No"}) ¬
         is "Quit" then
      return true
   else
      return false
   end if
end quit



Ohne, das ich das testen könnte.
_________________
Viele Grüße

Jürgen Venne
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Wolle-77
•--->
•--->


Anmeldedatum: 25.02.2003
Beiträge: 449
Wohnort: Geldern

BeitragVerfasst am: 13.08.2007 - 12:20    Titel: Antworten mit Zitat

Hallo Jürgen (viele Grüße an die Frühschicht... – bis gleich Wink)

das ist kein Unterschied (schlimmer: jetzt kann man es gar nicht mehr beenden, da continue quit fehlt). Normaler Weise (früher hat da auch so funktioniert) ruft man den idle-Handler und damit den Betrieb einfach mit idle (einfach so – ohne my oder sonstwas) wieder auf.

Voraussetzung, damit ein idle-Handler arbeitet, ist Speichern als Programm ohne automatisches Beenden.

Im aktuellen AS (get version) scheint das alles nicht mehr zu funktionieren. Das bezieht sich alles auf den ScriptEditor, nicht auf AS Studio.
_________________
Martin Wolter
--
Apple rocks the planet!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 13.08.2007 - 14:04    Titel: Antworten mit Zitat

Grrrr... Das ist doch grosser Mist!
Rolling Eyes Ich wollte das eigentlich als Ersatz für die Folder-Actions (Ordner überwachen) benutzen, da diese immer rumzicken und sich ebenfalls merkwürdig verhalten, und jetzt der gleich Mist beim on-idle-Handler.

Ich habe aber ein Tool gefunden, um aus Stay-Open-Applescripts einen Hintergrund-Prozess zu machen. Hier hab ich das mal beschrieben, vielleicht kanns ja sonst noch wer gebrauchen...

Das würde dann ja auch verhindern, dass das Script versehentlich beendet wird und hätte ausserdem den Vorteil, dass dieses wirklich im Hintergrund läuft. Mal sehen, vielleicht klappt's damit...

Wenn aber jemand einen anderen Workaround findet, wäre ich natürlich glücklich.

Gruss & Danke, H =: o) L G I
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Wolle-77
•--->
•--->


Anmeldedatum: 25.02.2003
Beiträge: 449
Wohnort: Geldern

BeitragVerfasst am: 13.08.2007 - 21:23    Titel: Antworten mit Zitat

Hallo iScript,

wie gesagt sieht das für mich nach einem Fehler aus! Irgendwie müßte es Apple mitgeteilt werden.

Denn mein Programm, welches es früher problemlos genutzt hat, läuft ebenfalls nicht mehr und war genauso aufgebaut.

Besonders merkwürdig ist, daß nach Verneinen des Quits der idle-Handler noch einmal aufgerufen wird; aber eben dann nicht mehr, also das return dann nicht mehr gilt.

Ansonsten war das immer eine schöne und vor allem sichere Sache!
_________________
Martin Wolter
--
Apple rocks the planet!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 13.08.2007 - 22:34    Titel: Antworten mit Zitat

Wolle-77 hat Folgendes geschrieben:
wie gesagt sieht das für mich nach einem Fehler aus! Irgendwie müßte es Apple mitgeteilt werden.

Okay, werd ich mit Steve mal ein Bier trinken gehen. Weiss jemand seine iPhone-Number? Wink
Vielleicht werde ich mal mein potato-english zusammenkratzen, und eine Support-Anfrage wagen. Wenn das jemand anderes übernehmen möchte, der des Englischen mächtiger ist, werd' ich nicht grad beleidigt sein.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1529
Wohnort: Olten-CH

BeitragVerfasst am: 14.08.2007 - 06:40    Titel: Antworten mit Zitat

Vorher vielleicht noch ein Versuch auf D hat Folgendes geschrieben:
on idle --button "nicht automatisch beenden"
   beep
   return 2
end idle

on quit
   if button returned of ¬
      (display dialog "Really quit?" buttons {"Continue", "Quit"} default button {"Continue"}) ¬
         is "Quit" then
      continue quit
      --(*
   else -- ich meine dass er so wenisgstens hörbar weiterarbeitet
      set PfFile to ((first item of (list disks)) as string) & ":" & ¬
         "Users:McHeim:Desktop: scripte McHeim:iScriptIdleStayOpen.app"
      tell application "Finder"
         activate (open file PfFile)
      end tell
      --*)
   end if
end quit

komisch sehr komisch: ich könnt schwören das hat funktioniert beim ersten Script-herstellen(die Idee des finderaufrufes des eigenen Programms war übrigens der wahre Grund meines ersten handlers: da ich aber das Programm nicht als stayopen gespeichert hatte, war kein Fehler-Korrektur mit dem Finderaufruf zu erreichen):
beim "continue" der jetzigen Version hat er nach der HERSTELLUNG wunschgemäss weiter geklopft!(2x, wie befohlen). Sobald ichs nun teste(Kopie ab Forum), wieder das alte Problem: dass nämlich der handler inaktiv bleibt während er immernoch läuft, totz dem Finder-Aufruf.

Einen Bastler-Ausweg hab ich aber gefunden: wenn als erstes Komando nicht Apfel_Q sondern Apfel_E(Edit) gegeben wird, läuft er dann auch nach einem Apfel_Q mit "Continue" als Antwort so weiter wie erwünscht: er klopft 2x schön brav alle x secunden!


Frage Question Sehe ich das richtig, dass das PROGRAMM als "stayopen" gespeichert ( OSX heisst es: "NICHT automatisch beenden AKTIVIEREN", Wink @Jürgen Venne, den ich unbedingt noch brauche für das Drucker-Shell) auf OS9 weder so noch so ein Problem macht?
Jedenfalls meine Versuche bestätigen diese Aussage!
hat Folgendes geschrieben:
on idle --button "nicht automatisch beenden"
   beep
   
return 2
end idle

on quit
   if button returned of ¬
      (display dialog "Really quit?" buttons {"Continue", "Quit"} default button {"Continue"}) ¬
         is "Quit" then
      continue quit
       (*
   else -- ich meine dass er so wenisgstens hörbar weiterarbeitet
      set STARTNAME to (first item of (list disks)) as string
      
set PfFile to STARTNAME & ":" & ¬
         "Desktop Folder: Skripte McChef:iScriptIdleStayOpen.app"
      tell application "Finder"
         activate (open file PfFile)
      end tell
       *)
   end if
end quit

*) sind aktiviert im letzten Programm!
OSX10.3.9 hat Folgendes geschrieben:
on idle
   activate current application
   
activate (display dialog " hier bin ich!" giving up after 2) --<-MacMinileider taubstumm
   
beep
   
beep
   
return 2
end idle
on quit
   if button returned of ¬
      (display dialog "Really quit?" buttons {"Continue", "Quit"} default button {"Continue"}) ¬
         is "Quit" then
      continue quit
      (*
--jetzt weiss ich, dass Apples Fehler für diese idles bereits seit OS10.3.9 bestehen: ohne die folgende Finderaktivität bleibt der handler zwar aufgerufen nach "continue", funktioniert aber nicht.
   else --OSX 10.9.3 mit dieser Obtion läuft der handler weiter und ist auch beendbar mit Quit
      set STARTNAME to (first item of (list disks)) as string
      set PfFile to STARTNAME & ":" & ¬
         "Users:DesktopServer:Desktop: interims mcserver:iScriptIdleStayOpen.app"
      -- interims mcserve
      tell application "Finder"
         activate (open file PfFile)
         activate
      end tell
       *)
   end if
end quit

_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 14.08.2007 - 13:57    Titel: Antworten mit Zitat

verstehe nicht die hälfte von dem, was du sagst, und kann auch keine lösung entdecken.
und dem user zu sagen, er soll bitte lieber ⌘E benutzen statt ⌘Q, wenn er das script versehentlich zu beenden versuchen mag, damit dieser beendigungs-vorgang dann auch wirklich abbrechbar ist, ist wohl auch nicht die lösung Laughing
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1529
Wohnort: Olten-CH

BeitragVerfasst am: 14.08.2007 - 17:44    Titel: Antworten mit Zitat

hast dus wenigstens ausprobiert? Die Störung war vielleicht nur bei mir vorübergehend oder wegen eines eigenen Fehlers? Jetzt habe ich alle 3 Versionen auf allen 3 Systemen nochmals druch-getestet und überall den durch dich gewünschten Effekt erzielen können (mit Apfel + Q, dann diese und jene Obtion, funktioniert tadellos). Das muss doch funktionieren so. Weil: du hast ja selbst beobachtet dass mit einer zwischengeschalteten Finderaktion das Skript problemlos weiteläuft, und die wird durch den "open" Aufruf ja automatisch gemacht. Hab ich was falsch gemacht?
_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 14.08.2007 - 21:32    Titel: Antworten mit Zitat

hatte eines deiner bunt-gefiederten ausprobiert, funzte aber nicht.
komischerweise funzt diese etwas vereinfachte variante hier aber in der tat ganz prächtig. danke!

(ich bleibe allerdings skeptisch und hoffe, dass es nicht nur temporär so ist. vielleicht könnt ihr ja auch mal gegen-testen):

on idle
   beep
   return 2
end idle

on quit
   if button returned of ¬
      (display dialog "Really quit?" buttons {"Continue", "Quit"} default button {"Continue"}) ¬
         is "Quit" then
      continue quit
   else
      tell application "Finder" to open file (path to me as text)
   end if
end quit
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1529
Wohnort: Olten-CH

BeitragVerfasst am: 15.08.2007 - 13:11    Titel: Antworten mit Zitat

genau das hatte ich in meinen allersrsten handler gegeben dann den Starter dazu 2 fach deponiert -> an beiden Orten nicht funktioniert->weil ich nicht wusste, was AS eigentlich aufruft mit
iScript hat Folgendes geschrieben:
path to me
innerhalb eines handlers->wieder entfernt.
Idea noch eine Idee namens "Co-Pilot mit doppelter Redundanz":
Wenn das nicht sicher funktioniert, dann sicher das andere:
Ich habe mal 2 idles laufen lassen: das erste(idle_1) ruft deinen idle ständig auf, dein idle hat deine Quit obtion, welche aber zuerst den idle_1 beendet, dann erst continue quit --das (wie ich sehe) nicht nur idles sondern jegliches Wunschprogramm "quitiert" .
Damits weiterläuft, auch wenn dein user oder ein AppleSkript namens "AlleProgramme schliessen" die idle_1 quitiert, müsste dein idle nebst 2x beep-sen jedesmal auch noch idle_1 starten. Da kann doch nichts mehr schief gehen¿¿ Soviel ich weiss könnte dieses Laminat nur noch durch das enorm effektive, geniale Skript des eines gewissen @iScript gekillt werden, dem er den Namen 000000000000_hardcore_killer (in Anlehnung an 007?) gegeben hat Wink

Was hälst du davon? lohnt es sich überhaupt darüber zu diskutieren, geschweige Versuche damit anzustellen?
_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X 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