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

Script soll sich stets zur vollen Stunde aufrufen

 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Lösung_Monitor_Auflös_App
•-->
•-->


Anmeldedatum: 25.01.2016
Beiträge: 53

BeitragVerfasst am: 15.04.2016 - 16:21    Titel: Script soll sich stets zur vollen Stunde aufrufen Antworten mit Zitat

Ein "in die Jahre Gekommener" sucht Script, welches sich "zur vollen Stunde" automatisch wiederholt
Weil ich beim scripten erheblich aus der Übung gekommen bin (>> man vergisst ja so vieles <<) suche ich deshalb Hilfe in eurem Forum:
Ich brauche also ein Script, welches während des Tages Zwischen 8 Uhr und 22 Uhr sich
1) zur "vollen Stunde" automatisch wiederholt
2) bei jedem Aufruf einen Dialog von 10 sec Dauer zeigt mit folgenden Optionen:
Option 2)A) der user lässt den Dialog einfach 10 sec laufen ohne irgend eine Aktion zu tätigen :
⁃ In solchem Fall soll das Script ein anderes Script aufrufen zur Handlung
⁃ und sich anschliessend selbst beenden um sich selbst wieder aufzurufen zur nächsten "vollen Stunde".
Option 2)B) der user klickt auf OK
⁃ In solchem Fall soll das Script kein anderes Script aufrufen, sich selbst aber beenden um sich dann wieder zur nächsten "vollen Stunde" aufzurufen.
Frage:
Gibt es in eurem Forum schon ein solches Script ? (das man einfach abkopieren könnte?) Selbst habe ich nichts finden können in Snows Forum
Aliter: Könnte jemand von euch ein solches Script schreiben?


Zuletzt bearbeitet von Lösung_Monitor_Auflös_App am 22.04.2016 - 12:30, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Wolle-77
•--->
•--->


Anmeldedatum: 25.02.2003
Beiträge: 447
Wohnort: Geldern

BeitragVerfasst am: 18.04.2016 - 20:13    Titel: Antworten mit Zitat

Also für einfachsten Einsatz und ohne sich mit Launch Demons oder Cron Scripten beschäftigen oder an anderen zeitgesteuerten Hilfslösungen herum zu konfigurieren zu müssen, ist das hier zweckmäßig und ziemlich ressourcenschonend. Programm als stay open sichern:

Code:
property ausgefuehrt : false
property dialogzeit : 15
property todoscript : "Script_hier_definieren"
property scriptparameter : "Scriptvariablen_hier_definieren_oder_uebergeben"

on idle
   my check()
   return 60
end idle

on check()
   set minute to (minutes of (current date)) as integer
   if minute is 0 then
      if ausgefuehrt is false then
         set ausgefuehrt to true
         set abfr to display dialog "Optionsdialog … Script XXX wird in 10 Sekunden ohne Interaktion ausgeführt …?" buttons {"Nein, diesmal nicht ausführen"} default button 1 giving up after dialogzeit
         if gave up of abfr is false then
            run script (load script (file todoscript)) with parameters scriptparameter
         end if
      else
         set ausgefuehrt to false
      end if
   end if
end check

_________________
Martin Wolter
--
Apple rocks the planet!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Lösung_Monitor_Auflös_App
•-->
•-->


Anmeldedatum: 25.01.2016
Beiträge: 53

BeitragVerfasst am: 19.04.2016 - 09:20    Titel: Antworten mit Zitat

lieber Martin Wolter
Das sieht bestens aus was du geantwortet hast, will dir für die grosse Hilfe danken: Jetzt kann ich nämlich mit Leichtigkeit analoge links dazu in Snows Forum auffinden:
Ich stehe kurz vor dem Funktionstest, hatte nur noch Anlaufsmühe mit 2 Punkten:
1)
Wolle-77 hat Folgendes geschrieben:
Programm als stay open sichern:

daher resultiert das 2.Problem:
2) offenbar muss man ein idle-script einmal starten um es ganztags offen zu halten?
ad 1)
Habe nun dank deinem idle-Tipp leicht eine Anweisung Snows gefunden im Forum und versuche es also so analog zum link zu regeln:
Snow demonstriert HIER den Gebrauch eines idle-Handlers hat Folgendes geschrieben:
•=> H I E R Snows Anweisung zum Begriff stay open

Snow hat Folgendes geschrieben:
Das Skript muss als Programm gespeichert werden mit der Option "Nicht automatisch beenden".

Idea aha jetzt geht auch mir ein Licht auf, vielen Dank:
Mit der Tastenkombination {Apfel+ Tab} kann ich also überprüfen ob dein Programm läuft: dieser Punkt funktioniert jetzt bestens bei mir.
ad 2) Frage:
Würde das klappen, wenn ich dem Finder über dein >>idle-Programm<< ein: "bei der Anmeldung öffnen" verordnen würde?
Würde dann jeden Tag zur vollen Stunde die idle-Überprüfung quasi ohne weiteres Zutun erfolgen? Ich frage weil das etwas lange dauern würde es zu überprüfen.
3. Problem:
Wie kann ich erreichen dass der im Handler verpackte Dialog in den Vordergrund allen Geschehens rückt auf dem zu überprüfenden Komputer ?
Danke für Antwort


Zuletzt bearbeitet von Lösung_Monitor_Auflös_App am 19.04.2016 - 19:54, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Lösung_Monitor_Auflös_App
•-->
•-->


Anmeldedatum: 25.01.2016
Beiträge: 53

BeitragVerfasst am: 19.04.2016 - 19:52    Titel: Antworten mit Zitat

Also Martin
(ich heisse übrigens José und bekenne damit dass ich durch das Spanische meiner Hispano-Latina-Mutter mit der deutschen Grammatik arg durcheinander gebeutelt werde sodass mir das flüssige Formulieren wie du Z.B. es beherrschen tust, schwer fällt. Daher die Bitte um Gnade vor Recht)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Lösung_Monitor_Auflös_App
•-->
•-->


Anmeldedatum: 25.01.2016
Beiträge: 53

BeitragVerfasst am: 20.04.2016 - 08:45    Titel: in deinem script wird eine Datei gesucht, ich verstehe nicht Antworten mit Zitat

Leider noch ein Problem das ich selbst nicht lösen kann:
Dein Script, Martin Wolter, lief den ganzen Tag, allerdings ohne zu reagieren (d.h. kein Dialog zur Stunde NULL) jedoch oft eine error-Meldung lautend so :
"...liefert eine Zeitüberschreitung....???"
bis ich dann ca. um 19 h 30 eine andere Fehlermeldung lesen konnte "Die Datei „file Script_hier_definieren“ wurde nicht gefunden."
Diese Fehlermeldung kann ich stets reproduzieren wenn ich dein script so umändere dass es stets läuft nachdem ich es im ScriptEditor mit "Ausführen" starte:

Nun die Frage ob bei euch ebenfalls die 2. Fehlermeldung("Die Datei „file Script_hier_definieren“ wurde nicht gefunden.") auftaucht wenn ich das script auf "jede Minute soll es laufen" umändere, so Z.B:
Zitat:
property ausgefuehrt : false
property dialogzeit : 15
property todoscript : "Script_hier_definieren"
property scriptparameter : "Scriptvariablen_hier_definieren_oder_uebergeben"
my check()
on idle
   my check()
   return 60
end idle

on check()
   set minute to (minutes of (current date)) as integer
   if minute is not 0 then --statt if minute is 0 then
      if ausgefuehrt is false then
         set ausgefuehrt to true
         set abfr to display dialog "Optionsdialog … Script XXX wird in 10 Sekunden ohne Interaktion ausgeführt …?" buttons {"Nein, diesmal nicht ausführen"} default button 1 giving up after dialogzeit
         if gave up of abfr is false then
            run script (load script (file todoscript)) with parameters scriptparameter
         end if
      else
         set ausgefuehrt to false
      end if
   end if
end check

In diesem variierten script, welches nur jedes 2. Mal abläuft wenn es durch "Ausführen" gestartet wird (w.s. wegen der Stelle: "false oder true") tritt die Fehlermeldung auf,

das würde bedeuten dass auf meinem Komputer es zu Konflikt kommt mit:
Zitat:
property scriptparameter : "Scriptvariablen_hier_definieren_oder_uebergeben"

Warum mein Komputer dort eine Datei sucht ist mir völlig schleierhaft.
Danke für Hilfe.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Lösung_Monitor_Auflös_App
•-->
•-->


Anmeldedatum: 25.01.2016
Beiträge: 53

BeitragVerfasst am: 20.04.2016 - 09:12    Titel: Antworten mit Zitat

Bemühe mich durch EDIT nun alles folgende RICHTIG zu kommentieren:

Sorry, inzwischen hab ich verstanden:
1) wenn der Dialog durch Klick auf blauen button bestätigt wird resultiert:
{button returned:"", gave up:false}
2) Wenn Dialog einfach ohne Anwort bleibt nach 10 sec, erfolgt als Ergebnis:
true
Nun das folgende Problem konnte ich demnach selbst lösen:
Das Ziel meines Scripts sollte sein:
Lösung_Monitor_Auflös_App hat Folgendes geschrieben:
Option A) der user lässt den Dialog einfach 10 sec laufen ohne irgend eine Aktion zu tätigen :
⁃ In solchem Fall soll das Script ein anderes Script aufrufen zur Handlung

Also: {Bei Betätigen des OK-buttons sollte das "anderes Script" NICHT laufen}
Lösung
bei Ergebnis false (d.h. die giving up Zeit wurde unterbrochen durch Drücken auf ok-button soll kein Script gestartet werden)

somit werde ich Martins Script so abändern:
if gave up of abfr is true then(also wurde ok button nicht gedrückt d.h. die giving-up-Zeit konnte ablaufen ergibt true) in solchem Falle solle das 2.Script ausgeführt werden.
3) todoscript muss zuerst als file definiert werden mit Pfadangabe u.s.w:
property todoscript : "Script_hier_definieren"

4) Noch ein Problem konnte ich selbst lösen:
Lösung_Monitor_Auflös_App hat Folgendes geschrieben:
3. Problem: Wie kann ich erreichen dass der im Handler verpackte Dialog in den Vordergrund allen Geschehens rückt auf dem zu überprüfenden Komputer ?

Da hilft mir Martins Hinweis weiter:
Wolle-77 hat Folgendes geschrieben:
ohne sich mit Launch ... herum zu konfigurieren zu müssen

Das tolle ist dass Martins Script eben Launch-ist, d.h. es ist im Stande das Front-befindliche Programm identifizieren (Z.B. Excel falls der Excel beschäftigt). Dies Eigenschaft kenne ich ansonsten nur noch von Scripten, welche mittels dem Scriptmenu angewählt werden.
somit lege ich in etwa folgenden "launcher" in Martins Script:
Zitat:
set FrontProgr to (path to frontmost application as text)

set NameFrontApp to name of application FrontProgr
tell application NameFrontApp
   activate
   display dialog "..XXX..." giving up after 5 default answer " Frontprogramm heisst " & NameFrontApp
end tell


Dem folgenden bin ich nun glaube ich auch auf die Schliche gekommen:
Lösung_Monitor_Auflös_App hat Folgendes geschrieben:
Dein Script, Martin Wolter, lief den ganzen Tag, allerdings ohne zu reagieren (d.h. kein Dialog zur Stunde NULL)

Das hängt offenbar mit dem timing des Scripts zusammen:
Die sog "volle Stunde" dauert jeweils exakt 60 Min lang pro Stunde.
Mein Script sollte genau diese eine Minute abdecken durch seinen Raster. Nun der Zeitraster wird durch folgende Stelle festgelegt:
Wolle-77 hat Folgendes geschrieben:
on idle
   my check()
   return 60
end idle

Das ist mathematisch zwar einleuchtend exakt richtig gerastert (das Script sollte jederzeit denjenigen Stundenpunkt rasternd treffen, an welchem das Kriterium >>if minute is 0<< zutrifft) doch in Wirklichkeit fällt das Script schon mit fast an Sicherheit grenzender Wahrscheinlichkeit eben um wenige Sekunden daneben:
Ursache? wohl so: das geplante return 60 wird w.s. nur in seltenen Fällen vom idle-Handler eigehalten(ev. weil noch andere Resourcen-Belastungen des Rechners dies nicht zulassen?)
Ich habe also return 60 return 45 umgeändert, jetzt läuft alles wie am Schnürchen und es verpasst seither nie mehr die Minute 0. Hab ich damit ev einen anderen Nachteil eingehandelt?


soweit kann ich also mal selbst versuchen weiterzukommen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
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
Seite 1 von 1

 
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