Dauerhaft laufendes Skript

MacNoob20

Aktives Mitglied
Thread Starter
Dabei seit
30.01.2020
Beiträge
171
Reaktionspunkte
10
Hi,

bisher habe ich mit dem Automator/AppleScript nur Schnellaktionen genutzt, die einmal liefen, wenn ich eine Tastenkombination habe.

Jetzt hätte ich gerne ein Programm, dass permanent läuft bis ich es beende. Beispielsweise eines, dass mir alle 5 Minuten die Uhrzeit sagt:

Code:
repeat
    set zeit to time string of (current date)
    say zeit
    delay 5*60
end repeat

Das ganze soll sich natürlich auch beenden lassen. Mein erster Gedanke war ein display dialog mit einem "Beenden" Knopf. Aber der die Dialogbox hält ja die Ausführung des Codes an.

Habt ihr Ideen? Danke!
 
Eventuell das Aufrufen alle 5 Minuten durch launchd machen lassen?

Man kann den Dialog auch automatisch schließen lassen, mit giving up after.
 
  • Gefällt mir
Reaktionen: dg2rbf
Danke für die schnelle Antwort!
Ich habe ir launchd mal angesehen, aber das würde das Programm von außen aufrufen. Ich definiere vorher aber auch noch Parameter, die steuern, wie groß die Intervalle (also die 5 Minuten) sind.

Giving up after ist glaube ich genau das Gegenteil von dem, was ich suche: Es soll ja immer weiter laufen bis jemand einen Knopf drückt. Es muss auch nicht unbedingt in einem Dialog sein. In der Menüleiste wäre auch ok.
 
Mach doch ein zweites Script, das das erste beendet bei Aufruf.
 
  • Gefällt mir
Reaktionen: mausfang
Das wäre auch eine Lösung, Danke!

Tatsächlich habe ich gerade festgestellt, dass das Zahnrad, das die Ausführung der Schnellaktion anzeigt für meine Zwecke vollkommen genügt. Ich hatte das beim Testen im Automator nur nicht gesehen, weil es nur kommt, wenn ich den Dienst ausführe...
 
Interessant, danke! Aber nein, das war nur das erst-beste Minimalbeispiel, das mir einfiel :)
 
Du kannst die in Automator erstellten Abläufe auch als App speichern. Dann kannst du das öffnen und schließen über das Icon im Dock.
 
  • Gefällt mir
Reaktionen: mausfang
AppleScript:
property timeDelay : 60
property initialCheck : true

on appOpen(appName)
    tell application "System Events" to set appNameIsRunning to exists process appName
    return appNameIsRunning
end appOpen

on idle
    if not initialCheck then
        set appStatusOpen to appOpen("TextEdit")
        if appStatusOpen then
            tell application "Monitor_App_Running"
                activate
                beep
                display dialog "Another Minute with TextEdit opened passed by"
            end tell
        end if
    end if
    set initialCheck to false
    return timeDelay
end idle

Das als App mit dem Namen "Monitor_App_Running" speichern mit folgenden Settings:

Bildschirmfoto 2021-04-03 um 22.33.06.png


Beenden dann über:

Bildschirmfoto 2021-04-03 um 22.34.53.png
 
Zurück
Oben Unten