Тема: VBS,HTA: Скрипты вне окна и внутри его
Плотно и часто использую динамическое создание окна HTA из скрипта VBS, почерпнутое мной из темы JScript: Создание окна, а также трансляция WScript в HTA. Умею только на VBS, поэтому использую конкретно этот вариант.
В текущий момент стоит задача проверить корректную читаемость нескольких тысяч файлов в формате ai (Adobe Illustrator).
Всё хорошо до тех пор, пока Illustrator не открывает диалоговое окошко с каким-нибудь вопросом или сообщением. В этом случае всё останавливается и ждёт, пока пользователь отреагирует.
Возникла идея использовать имитацию нажатия клавиш (метод SendKeys из библиотеки WScript.Shell).
Для того, чтобы всё сработало как надо, необходимо перед попыткой открытия файла отложенно запустить функцию с проверкой, не висит ли скрипт, и с необходимыми действиями по имитации нажатия клавиш (метод SetTimeout).
Однако, данный метод работает только в "оконном VBS". После экспериментов выяснилось, что если внести нужную функцию в текст, передаваемый в функцию динамического открытия окна HTA, то эту функцию можно вызвать с помощью метода SetTimeout. Простейшая проверка (отображение номера файла) показала работоспособность такого вызова: при нормальном открытии файлов функция, которая вызывается отложенно, отображает номера файлов с запаздыванием на несколько единиц, а когда открывается диалоговое окно и скрипт замирает, номера доходят до текущего.
Но тут появляется новая сложность: если метод SetTimeout доступен только в "оконном VBS", то объект WScript в нём никак невозможен.
В связи с этим вопрос: возможно ли как-то из "оконного VBS" обратиться к функциям из главного скрипта, породившего это окно? Или ещё какой-то способ?
В качестве запасного варианта держу возможность дополнительного скрипта, который бы запускался из функции, вызываемой методом SetTimeout, но хотелось бы по возможности обойтись одним скриптом.