1

Тема: ahk: задержка выполнения команды, при выполнении другой

Добрый день! Если моя тема уже изъета поперёк прошу не особо не ругаться=)

Не знаю как организовать задержку вот в этом коде:


F9::


Send,^{vk43} 
Sleep, 100
Send,{Enter} // здесь при нажатии клавиши запускается процесс обработки изображения (достаточно ресурсоёмкий)

KeyWait, F9
IfWinNotExist, Adode Photoshop CS5
IfWinNotExist, Adode Photoshop CS5
Run, C:\Program Files (x86)\Photoshop\x64\Photoshop.exe
WinWait, ahk_class Photoshop
WinActivate
Send {F12}
ExitApp

объясню в чем проблема.  в одной программе запускается процесс обработки изображения  и затем сразу переходит в Photoshop, в которой также запускается "некий процесс". Все это в сумме даёт серьезную нагрузку на машину, если учесть и другие факторы.
Необходимо чтобы первый процесс задерживался на 7 секунд, а затем выполнялся, но в это же время происходил второй процесс (переход к Photoshop с выполнением последующего кода)

2

Re: ahk: задержка выполнения команды, при выполнении другой

Задержка организовывается использованием Sleep.

Необходимо чтобы первый процесс задерживался на 7 секунд, а затем выполнялся, но в это же время происходил второй процесс (переход к Photoshop с выполнением последующего кода)

Что значит «процесс»? Что значит «задерживался»?

Посмотрел код, прочёл «объяснение», не понял в чём проблема.

3 (изменено: Maxfashko, 2013-05-06 12:14:04)

Re: ahk: задержка выполнения команды, при выполнении другой

происходит нажатие клавиши

Send,^{vk43} 
Sleep, 100
Send,{Enter}

по этому нажатию программа выполняет обработку.

сразу же, не дожидаясь окончания выполнения обработки, скрипт активирует photoshop и запускает  в нем"некий процесс обработки"

KeyWait, F9
IfWinNotExist, Adode Photoshop CS5
IfWinNotExist, Adode Photoshop CS5
Run, C:\Program Files (x86)\Photoshop\x64\Photoshop.exe
WinWait, ahk_class Photoshop
WinActivate
Send {F12}
ExitApp

необходимо:
реализовать задержку на этом этапе, после нажатия первой клавиши в блоке

Send,^{vk43} 
Sleep, 100
Send,{Enter}

в n секунд, и не дожидаясь окончания таймера sleep продолжать выполнение остального кода

KeyWait, F9
IfWinNotExist, Adode Photoshop CS5
IfWinNotExist, Adode Photoshop CS5
Run, C:\Program Files (x86)\Photoshop\x64\Photoshop.exe
WinWait, ahk_class Photoshop
WinActivate
Send {F12}
ExitApp

по окончанию таймера sleep выполнить этот код в неактивном окне первой программы


Send,{Enter}

В неактивном потому, что я буду находиться в photoshop

Как я понимаю тут не обойтись без цикла.
Объяснил как смог)

4 (изменено: creature.ws, 2013-05-06 12:33:40)

Re: ahk: задержка выполнения команды, при выполнении другой

Объяснил как смог

Теперь понятно. Дело не в подробности объяснения, а в наличии уточнения, что именно enter должен быть «нажат» через 7 секунд.

Как я понимаю тут не обойтись без цикла.

Можно я обойдусь без цикла?

F9::
    Send,^{vk43}
    SetTimer SendEnter, -7000
    KeyWait, F9
    IfWinNotExist, Adode Photoshop CS5
        Run, C:\Program Files (x86)\Photoshop\x64\Photoshop.exe
    WinWait, ahk_class Photoshop
    WinActivate
    Send {F12}
    return

SendEnter:
    ControlSend,, {Enter}, заголовок первой программы
    return

5

Re: ahk: задержка выполнения команды, при выполнении другой

Спсибо большое все работает как нужно!)

вопрос, зачем после

SendEnter:
    ControlSend,, {Enter}, заголовок первой программы
    return

return ?
Я его убрал, так как скрипт не хотел завершаться

ExitApp

После этого все стало как нужно

6

Re: ahk: задержка выполнения команды, при выполнении другой

return — конец подпрограммы, выполнявшейся по таймеру.

После этого все стало как нужно

Вот и замечательно.