Плохо знакомы с этим, поток управления не работает так, как я думаю, это должно
Поэтому я пытаюсь создать скрипт автоматизации, который поможет скопировать очень большую библиотеку CD в mp3 с помощью программы CDex. Проблема в том, что скрипт не остается открытым.
В прошлый раз, когда я пытался сделать сценарий, это было действительно плохо, но по крайней мере это сработало. Когда он работал, значок AHK находился в системном окне, но этот скрипт, похоже, ничего не делает, и в диспетчере задач ничего не происходит в процессах.
Я вполне уверен, что моя проблема заключается в потоке контроля и использовании мной "возврата". Я думал, что когда вы используете, что запускает скрипт обратно наверх?
Вот мой код, пожалуйста, помогите мне найти, где я ошибся.
ifwinexist, copying
{
return
}
else
{
Gosub chktry
return
}
chktry:
driveget, traystatus, statuscd
ifequal, traystatus, open
{
return
}
else
{
Gosub matchchk
return
}
matchchk:
ifwinexist, no match found
{
Gosub nomatch
return
}
else
{
Gosub inxmatch
return
}
nomatch:
sendinput {Tab}{Tab}{Tab}{Tab}{Enter}{f9}
Gosub renameunknownloop
return
inxmatch:
ifwinexist, inexact match found
{
sendinput {tab}{tab}{enter}
Gosub inicopy
return
}
else
{
Gosub inicopy
return
}
inicopy:
sendinput {f9}
ifwinexist, overwrite
{
sendinput {tab}{enter}
return
}
else
{
Gosub midoverproa
return
}
midoverproa:
ifwinexist, copying
{
Gosub midoverprob
return
}
else
{
return
}
midoverprob:
ifwinexist, overwrite
{
sendinput {tab}{enter}
return
}
else
{
Gosub midoverproa
return
}
renameunknownloop:
ifwinexist, copying
{
Gosub renameunknownloop
return
}
else
{
formattime, localtime,, MM/dd/yyyy-h.mm.tt
filemovedir, S:\Dad's music\no name, S:\Dad's music\%localtime%, r
return
}
return
1 ответ
Вы должны поместить свой код в цикл, чтобы он мог постоянно проверять состояние лотка, например, следующее обновление проверяет каждую полсекунду:
while 1
{
ifwinexist, copying
{
return
}
else
{
Gosub chktry
return
}
Sleep,500 // Sleep for 500 milliseconds
}
...