Я создал цикл appleScript, который автоматизирует повторяющуюся задачу. Он запрашивает количество циклов, а затем делает свое дело.

Однако меня попросили найти способ выхода из цикла, если, например, кто-то случайно вставил слишком много циклов.

Есть ли способ, которым пользователь может выйти из цикла с помощью клавиатуры?

on run {input, parameters}

repeat input times

    tell application "AvidMediaComposer" to activate

    tell application "System Events"
        key code 29 using command down
        delay 0.2
        key code 124
        delay 0.2
        key code 39
    end tell

end repeat end run

заранее спасибо

1 ответ1

0

Я хотел бы создать два сценария. Один для выполнения реальной работы, который следит за сигналом, который вы хотите прервать, и другой, который отправляет сигнал. Так...

Рабочий скрипт с частыми проверками сигнала ...

set abortPath to POSIX path of (path to home folder as string)
set abortFile to quoted form of (abortPath & "abort.cmd")

repeat
    # Lets do wome 'work'
    set r to (random number from 0.1 to 1)
    delay r

    set abortNow to false
    try
        do shell script "test -f " & abortFile
        set abortNow to true
    end try

    if abortNow is true then 
        # Should remove abort.cmd here 
        exit repeat
    end if    
end repeat

Скрипт, который отправляет сигнал ...

set abortPath to POSIX path of (path to home folder as string)
set abortFile to quoted form of (abortPath & "abort.cmd")

set r to display dialog "Send signal to worker?" as text ¬
    buttons {"No", "Yes"} default button ¬
    "Yes" with icon stop with title "Send Signal?"

if button returned of r is "Yes" then
    do shell script "touch " & abortFile
end if

Более сложный способ - использовать классный « ASObjC Runner », чтобы показать диалог прогресса с кнопкой отмены, которую вы можете нажать, чтобы остановить цикл. Вот связанный вопрос с примером кода.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .