Führen Sie Applescript zu einer bestimmten Sekunde aus

Führen Sie Applescript zu einer bestimmten Sekunde aus

Ich bin nicht sicher, ob Apple Script das ist, was ich brauche, aber es scheint das meiste zu tun, was ich brauche. Schlagen Sie gerne Alternativen vor.

Ich muss eine Figur zu einem genauen Zeitpunkt an ein Programm senden, um ein Countdown-Video zu starten. Das Apple-Skript, das ich habe, ist

tell application "ProPresenter 5"
    activate
end tell
tell application "System Events"
    keystroke "z"
end tell

Ich muss in der Lage sein, das an einem Tag um 10:40:25 Uhr und am nächsten Tag um 10:40:15 Uhr zu starten. Alle Anleitungen, die ich sehe, beinhalten den Kalender oder Automator, aber diese haben eine Auflösung von 1 Minute. Ich muss es auch nur etwa 20 Minuten im Voraus einrichten

Falls es wichtig ist, ich verwende OS X 10.8.5

Antwort1

Hier ist eine Kleinigkeit, die ich für Sie eingerichtet habe. Sie zeigt einen Dialog an, in dem Sie aufgefordert werden, die Zeit einzugeben, zu der Systemereignisse den Tastendruck senden sollen. Sie können dieses Skript als Anwendung speichern und es ausführen, wann immer Sie möchten. Eine andere Möglichkeit wäre, die ersten beiden Zeilen des Codes zu entfernen und durch Folgendes zu ersetzen … property requested_time : "10:40:25 AM”. Dann können Sie das Skript einfach zu einem iCal-Ereignis hinzufügen, um es jeden Tag zu einer von Ihnen gewählten Zeit zu starten

set requested_time to display dialog "Please Enter Your Start Time With The Following Format: Hour:Minutes:Seconds" default answer "10:40:25 AM" buttons {"OK"} default button 1
set requested_time to text returned of requested_time
set theTime to time string of (current date)

tell application "ProPresenter 5" to launch -- Opens The App Without Bringing It Up Upfront. Added This Line To Make Sure Your Application Is Running When System Events Sends The Keystroke.  You Can Always Remove This Line If You Prefer

repeat until theTime is greater than or equal to requested_time -- Added The "Greater Than" Just As A Failsafe
    delay 1
    set theTime to time string of (current date)
end repeat

tell application "ProPresenter 5" to activate
delay .5 -- My system did not need this delay.  Yours may not either, but I added it just in case.  
tell application "System Events"
    keystroke "z"
end tell

Oder Sie speichern diese Version des Skripts als App.

property requested_time : "10:40:25 AM”
set theTime to time string of (current date)

tell application "ProPresenter 5" to launch -- Opens The App Without Bringing It Up Upfront. Added This Line To Make Sure Your Application Is Running When System Events Sends The Keystroke.  You Can Always Remove This Line If You Prefer

repeat until theTime is greater than or equal to requested_time -- Added The "Greater Than" Just As A Failsafe
    delay 1
    set theTime to time string of (current date)
end repeat

tell application "ProPresenter 5" to activate
delay .5 -- My system did not need this delay.  Yours may not either, but I added it just in case.  
tell application "System Events"
    keystroke "z"
end tell

Dann können Sie ein neues Kalenderereignis erstellen, das täglich wiederholt wird. 20 Minuten vorher wird das Skript gestartet, das Sie als App gespeichert haben.

Bildbeschreibung hier eingeben

Antwort2

Sie können einfach den AppleScript- delayBefehl verwenden, um die minutengenaue Ausführung des Skripts um beliebige Sekunden zu verzögern.

Gemäß Ihrem Beispiel: Wenn Sie möchten, dass es um 10:40:25 ausgeführt wird, richten Sie Ihr Skript so ein, dass es um 10:40:00 ausgeführt wird, aber setzen Sie den Befehl delay 25in die erste Zeile.

verwandte Informationen