Рубрика «wsh»

Предыстория

Всё началось с того, что кто-то постоянно брал мой планшет, причём без моего ведома. Планшет ASUS VivoTab Smart с Windows 8 на борту. Было решено сделать на рабочем столе фейковый ярлык, запускающий скрипт, который сделает фотки с камеры, скриншот экрана, отправит всё это дело на мой e-mail, а потом, как ни в чем не бывало, запустит проводник.
Читать полностью »

Костыль

Доброго всем времени суток. Предлагаю костыль, реализующий механизм многопоточности (а точнее «многопроцессности») для WSH VBScript. Не рекомендуется лицам с аллергией на индокод.
Первая мысль о потенциальных удобствах многопоточности пришла однажды во время решения на добровольных началах относительно несложной задачи по обработке и визуализации информации. И, поскольку установка IDE навроде Visual Studio и наш Helpdesk — понятия несовместимые, из «легальных» оставались только VBA и WSH. В то время был выбран последний. А действующие административные ограничения и желание получить дружественные методы продиктовали требования к данной реализации многопроцессности:

  • Код расположен в одном файле, как обычный сценарий.
  • Использует минимум ActiveX, и только встроенных, работоспособен без WMI, под WSH x86/x64.
  • Достаточная функциональность и удобство важнее быстродействия и паттернов.

Особенности:

  • Запущенный скрипт выполняет служебную функцию. Основной код выполняется в последующих процессах.
  • В «полной версии» основной код размещается только в классах, экземпляр любого из которых можно создать в отдельном процессе. В каждом новом процессе скрипт создает экземпляр служебного класса, который создает экземпляр указанного целевого класса, вызывает целевой метод, контролирует его ход, создает в глобальном контексте скриптов переменные, ссылающиеся на созданные экземпляры классов. В предшествующий скрипт возвращается объект инициализированного целевого класса, и «обрабатываются» события инициализации и завершения целевого класса запущенного скрипта.
  • В «легкой версии» логика аналогична, только основной код размещается внутри sub’ов, предшествующему скрипту возвращается не объект, а индекс запущенного, и нет обработки событий.
  • Для создания нового процесса скрипт рекурсивно запускает самого себя, передав данные о вызываемом методе и идентифицирующую информацию в именованном аргументе.
  • Единого пространства исполнения нет, каждый скрипт хранит свои данные и объекты в своем контексте. Для обмена данными объект Me первого скрипта передается в последующие с применением GlobalContainer, описанным в теме «обмен данными и объектами между скриптами — 2» на Сером форуме. Каждый скрипт после завершения целевого метода ожидает разрешения на завершение, такая задержка позволяет забрать из него полученную информацию.
  • Функционирует одинаково в WSH WScript и CScript, и в виде скомпилированного в ScriptCryptor exe-файла (правда, в exe не работают методы class_terminate).

Читать полностью »

Доброго времени суток уважаемые читатели.
JScriptInclude Gear v 0.1.0 — механизм каскадного импорта скриптов/библиотек. (Реванш)
Предлагаю Вашему вниманию пост-реванш, под названием JScriptInclude Gear механизм каскадного импорта скриптов/библиотек. Предыдущий пост презентующий JScriptInclude Gear на данный момент самозабвенно убран в черновики, теперь он совсем не актуален, не смотря на то, что предыдущая презентация была довольно сурово воспринята хабра-яваскриптерами, а там все таки было за что :), очень много опалы было вызвано непониманием сути, а именно того, что
JScript(WSH) != JavaScript(браузеры), в связи с чем JScriptInclude Gear возводился в ранг костылей, велосипедов, «было уже», «инахренаже» и т.д.
Я тогда очень хотел поделиться своим решением, но совсем не представлял как, как сделать его «вкусным» и понятным, но мне кажется сейчас у меня это получилось.
Тем не менее «Отхабренное» дело получило ход, люди пишут, люди пользуются, людям нравится. За прошедшую неделю я получил достаточно много отзывов, что стимулировало меня работать над своим решением, в итоге оно преобразилось до неузнаваемости. Спасибо всем, кто вышел вместе со мной на линию огня.

Тем же кто не знает о чем собственно речь — маленькое, завлекающее предисловие:
JScriptInclude Gear — это механизм каскадного импорта скриптов/библиотек предназначенный для использования в скриптах автоматизации написанных на языке JScript интерпретируемых технологией WSH(Windows Script Host) в окружении семейства операционных систем Windows. Дополнительно предоставляющий функционал для организации скриптов в виде базовых модулей, поддерживающий их определение в файлах конфигурации и их последующий вызов по псевдонимам и так далее, и тому подобное :)

Тех же, кто уже читал о JScriptInclude Gear в предыдущем посте, не смотря на, может быть, оставшийся негатив, я откланявшись попрошу остаться, уверяю Вас — здесь будет кое-что интересное, ведь изменилось почти всё: механизм теперь экспортируется COM-компонентой и подключается к Вашему скрипту двумя строками кода, подготовлен SFX-пакет для установки механизма в систему с автоматической регистрацией компоненты и автоматической конфигурацией необходимых путей, документация переделана «от и до», и теперь представлена в виде HTML, пример теперь стартует без «танцев с бубном», а в качестве приятного бонуса, в нем представлено несколько полезных модулей, которые описаны в документации (они, все-же являются примером использования и «не претендуют»), и естественно «подвылизан» сам код, хотя в процессе использования Вы с ним теперь собственно не сталкиваетесь.
Для тех кому неймётся, милости прошу на GitHub:
Механизм JScriptInclude Gear SFX-пакет установки.
(самостоятельный до безобразия :) )
Механизм JScriptInclude Gear сoрцы как есть.
(О развертывании в доп комментарии к последнему комиту, или в справке — раздел jsImport Object врезка «Внимание!!!»)
И все же хотелось бы, чтобы Вы прочитали оставшиеся «много букаф», хотя бы до пункта Возможности JScriptInclude Gear:

Заинтересовавшихся милости прошу под хабракат…
Читать полностью »

Всем доброго времени суток, уважаемые читатели.
Те, кто сталкивался с написанием скриптов автоматизации в Windows на языках JScript и VBScript наверняка знают о том, что очевидного способа подключения других скриптов в исполняемый — «задачка та еще», возможности же подключать их каскадом, т.е. подключать скрипты, которые в свою очередь сами подключают другие скрипты — не предусмотрено вовсе.

Я же расскажу о том, как я преодолел это обстоятельство путем разработки механизма каскадного импорта JScriptInclude Gear.

С момента первой публикации, произошло много полезных и концептуальных изменений, код частично упрощен и переработан, предложены новые решения и функциональность.

— Подготовлен новый пример использования. Теперь он не только демонстрирует непосредственно возможность импорта, но и представляет частичную реализацию предлагаемой модели стандартных модулей.
Внимание! Перед запуском примера обязательно ознакомитесь с разделом Example файла справки JScriptInclude.chm находящегося в архиве с примером.

— На скорую руку, и все же, подготовлен файл справки JScriptInclude.chm. В данной справке, более детально, описывается работа с механизмом, функционал, синтаксис, не очевидные моменты. В предоставляемом примере, перед непосредственным запуском, требуется совершение нескольких предварительных действий, касающихся указания действительных абсолютных путей, все необходимые инструкции изложены в разделе Example данного файла справки.

PS: Как уже упоминалось, справка довольно «сыровата», дефицит свободного времени, тем не менее она вполне информативна, в случае если моим решением заинтересуются пользователи, обязательно будет переработана.

Заинтересовавшихся прошу под кат…
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js