1

Тема: AHK: Почему этот скрипт исчезает?

Почему этот скрипт исчезает? Через 8 минут прмерно скрипт перестаёт выполняться и даже иконка исчезает из трея.

^F12::
snova:
FileDelete, D:\ххххххх\*.*
FileCopy, C:\Program Files (x86)\ххххх\ ,  D:\ххххххх\*.txt,  1
sleep 300

Gosub, snova

Что тут не так?

2

Re: AHK: Почему этот скрипт исчезает?

Если это весь скрипт то явного «не так» в нём нет. Ну кроме того, что раз уж не используется цикл, то правильнее использовать таймер.


^F12::
Settimer, snova, 300
Return

snova:
FileDelete, D:\ххххххх\*.*
FileCopy, C:\Program Files (x86)\ххххх\ ,  D:\ххххххх\*.txt,  1
Return

3

Re: AHK: Почему этот скрипт исчезает?

Почему это правильнее использовать таймер? А если файл долго копируется?

4

Re: AHK: Почему этот скрипт исчезает?

Pokerist пишет:

Почему этот скрипт исчезает? Через 8 минут прмерно скрипт перестаёт выполняться и даже иконка исчезает из трея.

^F12::
snova:
FileDelete, D:\ххххххх\*.*
FileCopy, C:\Program Files (x86)\ххххх\ ,  D:\ххххххх\*.txt,  1
sleep 300

Gosub, snova

Что тут не так?

Это явная ошибка- почитайте про рекурсию.
Gosub фактически вызывает функцию без параметров, а чтобы из неё можно было вернуться, нужно где-то(в стеке) сохранить адрес возврата. Так вот тут функция вызывается, но до завершения не доходит, поэтому каждый вызов оставляет в стеке адрес возврата, а стек не бесконечный- когда память заканчивается, программа падает. Если заменить Gosub на Goto, то этого не произойдёт.

5

Re: AHK: Почему этот скрипт исчезает?

OFF: Функция, страдающая солипсизмом .