Skip to content

2. Контексти виконання VBSCRIPT

2.1. Introduction

Програма vbscript не виконується безпосередньо в Windows, а в контейнері, який надає їй контекст виконання та певну кількість власних об’єктів. Крім того, програма VBScript може використовувати об’єкти, надані їй системою Windows, які називаються об’єктами ActiveX.

У цьому документі ми використовуватимемо два контейнери: Windows Scripting Host, який зазвичай називають WSH, та браузер Internet Explorer, який надалі іноді називатимемо IE. Існує ще багато інших. Так, програми MS-Office є контейнерами для похідного від VB об’єкта, який називається VBA (Visual Basic for Applications). Крім того, існує безліч програм для Windows, які дають змогу користувачам вийти за межі цієї системи, дозволяючи їм розробляти програми, що виконуються всередині програми та використовують її власні об’єкти.

Контейнер, у якому виконується програма VBScript, відіграє ключову роль:

  • Об’єкти, які контейнер надає програмі VBScript, відрізняються залежно від конкретного контейнера. Так, WSH надає програмі VBS об’єкт під назвою WScript, який забезпечує доступ, наприклад, до спільних ресурсів та мережевих принтерів хост-комп’ютера. А IE надає програмі VBS об’єкт із назвою document, який представляє весь документ HTML, що відображається. Програма VBS зможе тоді оперувати цим документом. Excel, у свою чергу, надає програмі VBA об’єкти, що представляють книги, аркуші книг, діаграми тощо… фактично всі об’єкти, з якими працює Excel.
  • Хоча об’єкти контейнера надають програмі VBScript усі її можливості, іноді вони можуть обмежувати певні її сфери. Так, програма VBScript, що виконується в браузері IE, не може отримати доступ до диска хост-машини з міркувань безпеки.

Отже, коли йдеться про програмування на VBScript, необхідно вказати, у якому контейнері виконується програма.

У Windows VBScript — не єдина мова, яку можна використовувати в контейнерах WSH або IE. Наприклад, можна використовувати JScript (=JavaScript), PerlScript (=Perl), Python тощо. Багато з цих мов на перший погляд здаються кращими за VBScript. Однак останній має серйозні переваги:

  • VB та його варіанти VBSCRIPT і VBA дуже поширені на комп’ютерах із Windows. Знання цієї мови видається необхідним.
  • Потужність програми визначається не стільки мовою, якою вона написана, скільки об’єктами, які вона може використовувати. При цьому багато з цих об’єктів надаються контейнерами, а не самими мовами.

Недоліком VBSCRIPT є те, що він не є переносимим на інші системи, окрім Windows, наприклад, на Unix. Натомість його конкуренти — JavaScript, Perl та Python — є переносимими. Якщо доводиться працювати на гетерогенних системах, використання однієї й тієї ж мови на різних системах може бути корисним або навіть необхідним.

2.2. Контейнер WSH

Контейнер WSH (Windows Scripting Host) дозволяє виконувати в середовищі Windows програми, написані на різних мовах: vbscript, javascript, perlscript, python тощо. Існує стандарт, якого слід дотримуватися, щоб мова могла використовуватися в WSH. Будь-яка мова, що відповідає цьому стандарту, може виконуватися в WSH. Можна припустити, що наведений вище перелік мов, які виконуються в WSH, може розширюватися. Контейнер надає програмам, які він виконує, об’єкти, що забезпечують їхню справжню потужність. Це сприяє згладжуванню відмінностей між мовами, оскільки тоді всі вони використовують один і той самий набір об’єктів. Вибір однієї мови на користь іншої може стати тоді просто питанням смаку, а не продуктивності.

Виконання програми в WSH здійснюється за допомогою двох виконуваних файлів: wscript.exe та cscript.exe. wscript.exe зазвичай знаходиться в каталозі інсталяції Windows, який зазвичай називається %windir%:


C:\ >echo %windir%
C:\WINDOWS

C:\>dir c:\windows\wscript.exe
WSCRIPT  EXE       123 280  19/09/01  11:54 wscript.exe

L'exécutable cscript.exe se trouve lui sous %windir%\command :

C:\>dir c:\windows\cscript.* /s

Répertoire de C:\WINDOWS\COMMAND
CSCRIPT  EXE       102 450  26/06/01  17:49 cscript.exe

Літера «w» у wscript означає windows, а літера «c» у cscript означає console. Скрипт можна запускати як за допомогою wscript, так і за допомогою cscript. Різниця полягає у способі відображення повідомлень на екрані:

  • wscript відображає їх у вікні,
  • cscript — на екрані

Ось скрипт coucou.vbs, який виводить на екран coucou:

Image

Відкриємо вікно DOS і послідовно запустимо його разом із wscript та cscript:

DOS>wscript coucou.vbs

Image

DOS>cscript coucou.vbs

Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.

coucou

Вище чітко видно різницю між цими двома режимами. У цьому документі ми будемо використовувати майже виключно консольний режим cscript. Цей режим підходить для так званих «пакетних» програм, тобто програм, що не передбачають взаємодії з користувачем за допомогою клавіатури. У наведених вище результатах слід звернути увагу на два моменти:

  1. Ми припустили, що виконувані файли wscript.exe та cscript.exe обидва знаходяться в каталозі «PATH» на комп’ютері, що дозволяє запускати їх, просто ввівши їхні імена. Якби це не було так, тут довелося б написати:
DOS>c:\windows\wscript coucou.vbs
DOS>c:\windows\command\cscript coucou.vbs
  1. Слід зазначити, що версія wsh, яка використовується в цьому прикладі та в подальшому тексті документа, — це версія 5.6.
  1. Файл-джерело скрипта має розширення .vbs. Це розширення позначає скрипт vbscript, тоді як скрипт javascript позначається розширенням .js.

Програма cscript має різні параметри запуску, які можна отримати, запустивши cscript без аргументів:

DOS>cscript

Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.

Utilisation : CScript scriptname.extension [option...] [arguments...]

Options:
//B          пакетний режим: приховує підказки та повідомлення про помилки скриптів
//D          Увімкнути налагодження
//E:engine   Використовувати движок для виконання скрипту
//H:CScript Замінити середовище виконання скриптів за замовчуванням на CScript.exe
//H:WScript Замінити середовище виконання скриптів за замовчуванням на WScript.exe (за замовчуванням)
//I          Інтерактивний режим (за замовчуванням, прот илежний опції //B)
//Завдання:x   xxx Виконати завдання WSF
//Logo       Відобразити логотип (за замовчуванням)
//Nologo     Заборонити відображення логотипу: під час виконання не відображається жоден банер
//S          Зберегти поточні параметри командного рядка для цього користувача
//T:nn       Тривалість виконання в секу ндах: Максимальний дозволений час виконання скрипта
//X          Виконати скрипт у відладчику

Аргумент //nologo приховує банер wsh:

C:\>cscript //nologo coucou.vbs
coucou

2.3. Формат скрипта WSH

Ми щойно розглянули перший скрипт: coucou.vbs

Image

Ми зазначили, що розширення файлу .vbs вказує на скрипт vbscript. Це не є обов’язковим. Ми могли б розмістити скрипт у файлі з розширенням .wsf у такому, більш складному вигляді:

Image

Виконання цього скрипта дає такий результат:

C:\>cscript //nologo coucou2.wsf
coucou

Скрипт WSH може поєднувати різні мови:

Image

Виконання цього скрипта дає такий результат:

1
2
3
4
C:\>cscript //nologo coucou3.wsf
coucou (vbscript)
coucou (javascript)
coucou (perlscript)

Звернемо увагу на наступні моменти:

  1. Контейнер WSH не пов'язаний з жодною мовою. Скрипт wsh може поєднувати мови в файлі з розширенням .wsf
  2. У такому разі скрипт обмежується тегами <job id="..."> ... </job>
  3. Усередині додатка (=job) мови, що використовуються в різних частинах коду, позначаються тегами <script language="...."> .... </script>
  4. Ця мова розмітки має назву: XML (eXtended Markup Language). XML не визначає жодних тегів, а лише правила розміщення тегів. Отже, тут слід зазначити, що мова розмітки, яка використовується у скрипті wsh, відповідає стандарту XML.

Надалі ми будемо використовувати виключно VBScript у файлах .vbs.

2.4. Об’єкт WSCRIPT

Контейнер WSH надає скриптам, які він виконує, об’єкт під назвою wscript. Об’єкт має властивості та методи:

Об’єкт Obj має властивості Pi, які визначають його стан. Таким чином, об’єкт thermomètre може мати властивість température. Ця властивість є одним із аспектів стану термометра. Іншим аспектом може бути максимальна температура Tmax, яку він може витримати.

Об’єкт Obj може мати методи Mj, які дозволяють зовнішнім агентам:

  • дізнатися про його стан
  • змінити його стан

Отже, наш термометр, якщо він електронний, міг би мати метод allumer, який увімкне його, інший метод éteindre, який вимкне його, та ще один метод afficher, який відобразить рівноважну температуру, щойно вона буде досягнута. З точки зору програмування метод — це функція, яка може приймати аргументи та повертати результати.

У VBScript властивості Pi об’єкта Obj позначаються як Obj.Pi, а методи Mj — як Obj.Mj. Об’єкт wscript з WSH є важливим об’єктом завдяки методам, які він надає скриптам. Так, його метод echo дозволяє вивести повідомлення. Синтаксис цього методу такий:

wscript.echo arg1, arg2, ..., argn

Значення аргументів argi відображаються у вікні (при виконанні за допомогою wscript) або на екрані (при виконанні за допомогою cscript у DOS).

2.5. Контейнер Internet Explorer

Вище ми зазначали, що Internet Explorer може виступати контейнером для скрипту VBScript. Проілюструємо це на простому прикладі. Нижче наведено сторінку HTML (HyperText Markup Language) під назвою coucou2.htm, яка не містить скрипту VBScript.

21

Image

Її пряме завантаження в Internet Explorer (Fichier/Ouvrir) дає такі результати:

Зміст файлу coucou2.htm показує, що HTML є мовою розмітки. Знати мову HTML означає знати ці теги. Їхнє основне призначення — вказувати браузеру, як відображати документ. HTML не повністю відповідає стандарту XML, але є близьким до нього.

У coucou2.htm містяться дві інформації, позначені як 1 і 2. Ми також відобразили їх у відповідному виведенні. Саме тег <title>...</title> забезпечив розміщення інформації 1 у рядку заголовка браузера, а тег <body>..</body> — розміщення інформації 2 в основній області браузера.

Ми не будемо детальніше зупинятися на вивченні мови HTML. Змінимо файл coucou2.htm, додавши до нього скрипт VBScript, і назвемо його тепер coucou1.htm:

Image

Скрипт VBScript було розміщено в тезі <head>...</head>. Його можна було б розмістити й деінде. Він виводить «coucou» під час початкового завантаження сторінки. У цьому випадку браузером має бути Internet Explorer, оскільки лише цей браузер за замовчуванням підтримує виконання скриптів VBScript. У результаті ми отримуємо таке відображення:

Image

після чого сторінка відображається у звичайному вигляді:

Image

Виконувався такий скрипт:

Image

У той час як контейнер WSH надавав скрипту об’єкт під назвою wscript, що дозволяв здійснювати відображення за допомогою його методу echo, то тут IE надає скрипту об’єкт window, що дозволяє здійснювати виведення за допомогою методу alert. Отже, щоб вивести «coucou», потрібно написати wscript.echo «coucou» у WSH та window.alert «coucou» у IE. Тут також можна продемонструвати, що насправді в контейнері IE можна використовувати кілька мов. Повернемося до прикладу, який вже наводився в WSH на сторінці coucou3.htm:

Image

Під час завантаження цієї сторінки за допомогою IE спочатку відображаються три інформаційні вікна:

а потім — остаточну сторінку:

Image

2.6. Довідка до WSH

WSH постачається з системою довідки, яка зазвичай знаходиться у папці «C:\Program Files\Microsoft Windows Script\ScriptDocs». Для версії 5.6 програми WSH файл довідки має назву «SCRIPT56.CHM». Щоб отримати доступ до довідки, достатньо двічі клацнути на цьому файлі. Може бути зручно створити ярлик на робочому столі.

Після запуску з’явиться приблизно таке вікно:

Image

Тут міститься довідка щодо контейнера WSH, а також довідка щодо мов VBScript та JavaScript. Це незамінний інструмент як для початківців, так і для досвідчених програмістів. Існує кілька способів роботи з цією довідкою:

  • не знаєте, що саме шукаєте. Хочете просто ознайомитися з тим, що пропонується. У такому разі можна скористатися вкладкою Sommaire, показаною вище. Наприклад, можна переглянути, що пропонується для VBScript:

Image

У довідці до VBscript ви знайдете багато інформації, якої немає в цьому документі.

  • Ви можете шукати щось конкретне, наприклад, як використовувати функцію msgbox у VBscript. У цьому випадку скористайтеся вкладкою Rechercher:

Image

Довідка відображає всі розділи, пов’язані з шуканим словом. Зазвичай перші запропоновані розділи є найрелевантнішими. Так і в цьому випадку: перший запропонований розділ є правильним. Достатньо двічі клацнути на ньому, щоб переглянути інформацію з цього розділу:

Image