Оконный скриптингДмитрий Репин aka cmapuk[0nline] Мало кто из более-менее продвинутих пользователей Windows-систем знает о существовании Windows Script Host, о simple-юзерах и говорить не приходится. Кроме того, мало кто знает, какие возможности имеют JScript/VBScript для Windows. Однажды на просторах ужасного по навигации сайта msdn.microsoft.com я наткнулся на линк для скачивания полной документации по Windows Scripting. Ввиду того, что делать мне было нечего, да и просто из интереса, я скачал сетап этой хелпы, в надежде найти там что-нибудь новенькое для себя, и занялся ее прочтением. Каково же было мое удивление, когда я попал в раздел, посвященный возможностям JScript, не входящим в стандарт ECMA! А вы знали, что JScript/VBScript работают с регулярными выражениями и имеют подобие операторов поиска/замены а-ля Perl? Но... обо всем по порядку. Кто ты, Windows Script Host?Windows Script Host (WSH) стал более-менее известен у нас только после бага MSIE и MS Outlook, позволявшего с помощью ActiveX создать WSH-объект. Но толком так никто и не понял, "зачем оно надо". Для чего же все-таки нужен WSH? WSH позволяет работать с файловой системой, реестром, сетевыми соединениями (диски, принтеры, етц), окружением и др. С помощью wsh-скриптов можно управлять запуском программ (даже с доступом к их Stdin/Stdout/Stderr), посылать сигналы другим процессам, удаленно администрировать систему, работать с сетевым(и не только) принтером, управлять входом в систему (login-скрипты) и многое другое. Кроме того, WSH можно совместить с js-, vbs-скриптами, чтобы взять от них "все самое лучшее". Скрипты для Windows Script Host могут быть не только отдельными программами, но и встраиваться в HTML-страницы, дабы быть использованными в технологии Active Server Pages (ASP), так же как JScript, VBScript или PerlScript (www.activestate.com). JScript - это не JavaScriptВ мире скриптовых языков существует стандарт ECMA, в рамках которого каждый из ***Script должен (теоретически =) ) соответствовать общепринятым нормам. Но эти нормы не ограничивают разработчиков в наполнении своего скриптового языка всевозможными инструментами, не входящими в стандарт. Все это выглядит для промежуточного потребителя (скрипт-программист) как два набора возможностей: те, которые он может предложить любому конечному потребителю (пользователю), и те, которые он может использовать для своих целей. Как пример можно привести JScript. Часть возможностей этого языка можно использовать в создании веб-страниц, причем понять этот язык сможет как MS Internet Explorer, так и Netscape Navigator или Opera. Использование другой части языка - нестандартной - приведет к необходимости оставлять на веб-страницах надписи типа "Только для MSIE", о которых пользователи Сети уже давно забыли и которые в наше время являются просто недопустимыми (хотя такие "клоуны" еще остались). В современном веб-строительстве вполне достаточно стандартных возможностей скриптовых языков - и для совместимости с броузерами и для воплощения всевозможных дизайнерских идей. Во многом этому поспособствовала так долго не получавшая всеобщего признания технология Shockwave Flash. Вернемся все же к JScript. Нынешнее состояние этого языка располагает к обширной эксплуатации последнего в Windows-системах. Этот язык будет полезен для администраторов локальных сетей, для пользователей, стремящихся автоматизировать свой рабочий процесс, а главное - для программистов, предпочитающих технологию ASP (Active Server Pages). Для любителей Visual Basic, занимающихся программированием для MSOffice и т.п., подойдет VBScript, который является бра-том-почти-близнецом JScript и может выполнять те же задачи, но VB-программистам в данном случае не придется изучать новый язык. Кроме стандартных возможностей, вроде мамематических вычислений, простых манипуляций со строками и т.п., JScript предлагает поработать с регулярными выражениями (Regexp), с ActiveX-объектами (OLE), cо строками в "адвансед"-режиме и другое. Рассмотрим примеры.
<script language="JScript"> В данном случае, re - регулярное выражение, str содержит "подопытную" строку. Методом replace() мы заменяем в строке str шаблон re на новую строку - "JScript". С помощью ActiveXObject можно манипулировать различными объектами, например, работать с таблицами Excel.
<script language="JScript"> Кроме того, можно создавать объекты прямо из файлов с помощью функции GetObject. Еще одна довольно интересная возможность JScript не может не привлечь ваше внимание - объекты Dictionary. Правильнее будет сказать, что это не объект JScript, а возможность среды, а точнее - Scripting Runtime Library. Dictionary является аналогом ассоциативных массивов Perl - хэшей. Для тех, кто не знаком с этим понятием, поясню. Элементы обычного массива определяются числовым индексом, в то время как в хэшах этим индексом может быть любая строка. Допустим, к списку данных Имя, Фамилия, E-mail с помощью массива вам придется обращаться так: array[0],array[1],array[2]. С помощью ассоциативных массивов вы можете хранить эти данные как проименованный список. В JS, в отличие от Perl, вы манипулируете объектом ассоциативного массива:
<script language="JScript"> Кроме Dictionary, SRL предоставляет объект FileSystemObject, позволяющий работать с файлами и директориями в виде объектов. Это несколько удобнее, чем напрямую через WSH. Чем еще хорош Window Script Host?Для начала рассмотрим, какие объекты предоставляет нам WSH и для чего они могут пригодиться. WScript Object - Основной объект WSH WshArguments Object - Доступ к коллекции аргументов командной строки WshController Object - Для работы со скриптами удаленного управления WshEnvironment Object - Доступ к коллекции переменных окружения WshNamed Object - Доступ к именованным аргументам командной строки WshNetwork Object - Работа с сетью WshRemote Object - Удаленные скрипты WshRemoteError Object - Информация об ошибках (для WshRemote) WshScriptExec Object - Работа со скриптами WshShell Object - Работа с консолью WshShortcut Object - Создание ярлыков WshSpecialFolders Object - Пути к специальным папкам Windows WshUnnamed Object - Доступ к безымённым аргументам командной строки WshUrlShortcut Object - Создание интернет-ссылок Теперь разберемся, что из себя представляют WSH-скрипты. Скрипты для Windows Script Host могут содержаться в BAT-файлах, подключаются с помощью ActiveXObject в JS- и VBS-скриптах (в т.ч. в HTML). Кроме этого, WSH-скрипты могут содержаться в "своих" файлах - *.wsh и *.wsf (wsh-файлы - это скрипты для старых версий WSH). Эти файлы представляют собой специальные XML-конструкции. В одном файле можно использовать все доступные скриптовые языки.
<job id="Exampel1"> В одном wsf-файле может содержаться много таких конструкций. Тогда в этом файле все конструкции job заключаются в тэги <package></package>. Для того чтобы запустить ту или иную конструкцию, следует вызывать скрипт в командной строке следующим образом: >cscript //Job:Exampel1 mytest.wsf
В этом случае выполнится конструкция <job ID="Exampel1">....</job> из файла mytest.wsf. Стоит пояснить, что для запуска WSH-скриптов используются две стандартные windows-программы: wscript.exe и cscript.exe. Первая используется для запуска скриптов "двойным кликом" без параметров, вторая - для запуска с параметрами, в данном случае, из командной строки. Интересная возможность WSH - поддержка Drag'n'Drop. С помощью объекта WScript.Arguments в своем скрипте вы получаете имена файлов, с которыми вам надо работать. Вы сохраняете свой скрипт на диск, и далее можете просто "перетащить" нужные файлы и "бросить" их на ваш скрипт, который примет их имена(пути к ним) и сделает с ними то, что вам нужно. Теперь перейдем к рассмотрению задач, которые можно выполнять с помощью WSH, на примере JScript+ActiveXObject.
// Сетевые манипуляции Теперь можно привести простой пример login-скрипта.
oNet = new ActiveXObject("WScript.Network"); Чтобы получить доступ к какой-либо системной директории, например папке рабочего стола, можно воспользоваться объектом Wscript.SpecialFolders.
// Десктоп текущего пользователя WSH-скрипты могут работать со стандартными потоками STDIN, STDOUT, STDERR. Первые два потока могут использоваться только при запуске скрипта с помощью CScript.exe, то есть в командной строке. Стоит сказать, что сообщения об ошибках в WSH-скриптах более информативны, чем обычные сообщения об ошибках Windows или скриптов в броузере. Манипуляции с реестром WIndows могут производиться с помощью объекта Wscript.Shell. Этот объект позволяет как читать данные, так и записывать их (RegRead, RegWrite, RegDelete). Теперь еще немного примеров
<job ID="WShell_notepad"> Этот скрипт запустит программу Блокнот и напишет в ней фразу из переменной text.
<job Id="WshEnv"> А вот так можно получить информацию о домене локальной сети, имени компьютера в этой сети и пользователя. Windows Script ComponentsКроме всех описанных и не описанных выше возможностей самих языков JS, VBS и WSH, имеется возможность создавать свои скриптовые компоненты. После создания компонента вы можете обращаться к его методам и данным, создавая в своей программе объект с помощью WScript.CreateObject("My-Scripting.TestScripts"). Файлы скриптовых компонентов имеют расширение *.wsc и представляют собой файлы XML-образной структуры. Вот пример такого файла:
<?xml version="1.0"?> В таких компонентах можно разместить часто используемые программные блоки, например коды подключения к БД или разбора определенных файлов. The EndЕсли вы при установке Windows использовали режим Custom, то, вероятно, видели среди компонентов Windows Script Host. В противном случае, можно со 100%-ной уверенностью сказать, что Windows Script Host у вас установлен. Так почему бы не использовать такие богатые возможности?! С помощью Windows Script Host вы сможете упростить и ускорить многие рабочие процессы, настройки компьютера и локальной сети и другие задачи. Источник: "Компьютер Price", http://www.comprice.ru
| |
Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com |