Visual basic html = vbscript обработка событий


Содержание

VBScript процедуры и функции

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

Процедуры в VBScript

Написание процедуры начинается с ключевого слова Sub затем идет наименование процедуры, перечисление параметров в скобках. Затем идет программный код и заканчивается код ключевыми словами End Sub которые обозначают конец процедуры.

Пример процедуры без параметров:

Пример процедуры с параметрами:

Параметры в процедуре перечисляются без указания их типа.

Вызов процедуры осуществляется одним из 2-х способов:

  • Call (Param1, Param2, Param3)
  • Param1, Param2, Param3

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

Передавать параметры в процедуру можно по ссылке и по значению, для чего перед именем параметра пишем:

  • ByRef — передача параметра по ссылке (при изменении параметра внутри процедуры, исходная переменная, которая передавалась, так же будет изменена)
  • ByVal — передача параметра по значению (создается копия значения и изменение параметра внутри процедуры не изменяет исходную переменную, которая передавалась в процедуру)

Таким образом, если нужно в подпрограмме получить и вернуть в основную программу несколько значений, можно использовать передачу параметров по ссылке.

Пример возвращения нескольких значений из процедуры:

Функции в VBScript

Написание функции начинается с ключевого слова Function, затем название функции, перечисление передаваемых в нее параметров, код самой функции и заканчивается ключевыми словами End Function обозначающими конец функции.

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

Пример функции возвращающей значение:

Функцию можно использовать как процедуру, при этом параметры в нее можно передавать по тем же правилам, что и для процедуры и точно так же можно использовать ByVal и ByRef для передачи параметров по значению и по ссылке.

Пример использования функции как процедуры:

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

WSH: преобразуем макрос VBA в скрипт VBScript

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Сообщения 4

1 Тема от alexii 2011-03-31 04:12:37

  • alexii
  • Разработчик
  • Неактивен

Тема: WSH: преобразуем макрос VBA в скрипт VBScript

При автоматизации Microsoft Office средствами Windows Script Host довольно часто бывает проще записать макрос непосредственно в самом приложении Microsoft Office, а затем перенести текст полученного макроса Visual Basic for Apllication в скрипт Windows Script Host. Как правильно осуществить этот перенос?

Далее упоминания об использовании обычного скрипта *.vbs обозначены как VBS, об использовании формата скрипта *.wsf (WSH: пишем сценарии в формате WSF) — как WSF.

1. Константы

При переносе констант Microsoft Office в скрипт Windows Script Host нужно помнить следующее:

VBS: нужно вручную описать все используемые константы посредством ключевого слова Const.
WSF: достаточно добавить тэг reference, либо же использовать методику, изложенную в предыдущем пункте.

2. Оператор «:=», именованные и необязательные аргументы

Оператор «:=» присваивания значения некоторому параметру метода (используемый в макросах VBA для сокращения записи, когда задаются значения не всех параметров, либо параметры перечисляются в порядке, отличающемся от заданного прототипом) в Windows Script Host не поддерживается, поскольку Windows Script Host не поддерживает именованные аргументы, а только позиционные. Посему требуется убрать наименования аргументов (вместе с оператором «:=») и расставить аргументы в правильную позицию, так, как это описано в объектной модели того или иного метода или события. В большинстве случаев при работе с приложениями Microsoft Office необязательные аргументы допускается просто пропускать.

3. Глобальные объекты, раннее и позднее связывание

В глобальном контексте приложения Microsoft Office обычно наличествуют один или более глобальных объектов, таких, как объект Apllication целевого приложения, объекты CommandBars, FileDialog, Scripts (и т.д.) объектной модели самого Microsoft Office, объект UserForms объектной модели Visual Basic for Apllication. Ссылки на библиотеки, реализующие поддержку этих объектов изначально присутствуют в свойствах проекта VBA (\Tools\References…). В отличие от VBA, поддерживающего как раннее, так и позднее связывание, Windows Script Host поддерживает только позднее связывание при создании объектов. Исходя из вышеизложенного, надо помнить, что любой глобальный объект Microsoft Office требует явного предварительного создания перед использованием, как правило, завершения работы приложения методом «.Quit()» и очистки объектной переменной путём присвоения ей значения Nothing.

VBS:

WSF: объект может быть создан при помощи тэга object, либо может быть использована та же методика, что и для VBS.

Замечание: последний способ не рекомендуется использовать для Microsoft Word, ибо может возникать ситуация (при вызове скрипта *.wsf с параметром «/?», чтобы посмотреть справку скрипта), когда приложение останется в памяти после завершения работы скрипта. Особенности поведения приложений Microsoft Office при использовании технологии Automation изложены в KB288902: GetObject and CreateObject behavior of Office automation servers, в частности:

Note For Word, the UserControl property is read-only. It cannot be set to True or False. Word always remains running when the last reference is released.

Поэтому для Microsoft Word рекомендуется использовать методику, описанную в предыдущем пункте — непосредственное создание объекта в коде и завершение его методом «.Quit()».

4. Обработка событий

Поддержка обработки событий в Windows Script Host для объектов Microsoft Office осуществляется стандартными способами.

VBS:

WSF: можно добавить атрибут events со значением «true» в тэг «object». Кроме того, поддерживается использование методики, описанной в предыдущем пункте.

Замечание: к сожалению, большую часть событий приложений Microsoft Office обрабатывать не удаётся.

Visual basic html = vbscript обработка событий

Основы программирования на VBScript

VBScript — это язык сценариев, который предназначен для разработки интерактивных WEB -страниц. Коды VBScript загружаются в HTML документ, после чего браузер осуществляет выполнение этого сценария.

Кроме того, для обеспечения защиты из VBScript были изъяты возможности доступа к жестким дискам и операционной системе. Т.к. WEB — страницы запускаются на ПК пользователя, то этим исключается возможность испортить что-либо на его ПК при запуске WEB -страницы.

Сценарий- это обычный текстовый файл и для его редактирования можно использовать любой текстовый редактор.

Для вставки сценария в HTML документ предназначен тег Script . Атрибут Language определяет язык сценария. Для языка VBScript следует указать

Для языка JavaScript следует указать

HTML страницы могут содержать стандартные элементы управления: текстовые поля, кнопки, переключатели и другие. Для внедрения элементов управления на Web -страницу предназначен тег Input .

Пример вставки текстового поля.

Input Type = text Name =” txt 1” value =”АИС”>

Атрибут Type определяет тип элемента управления.

Атрибут Name определяет имя элемента управления, которое используется при написании сценариев.

Атрибут Value определяет исходное содержание текстового поля.

Атрибут Size определяет размер поля в символах.

Атрибут Maxlength определяет максимальное количество символов, вводимое пользователем.

Для вставки флажка тег Input имеет вид:

Каждый раз, когда пользователь щелкает на флажок, состояние элемента меняется на противоположное. Для исходной установки флажка используется атрибут Checked . Checked =1, если флажок установлен, и наоборот, если Checked =0, флажок сброшен.

Для вставки переключателя тег Input имеет вид:

В группе может быть установлен только один переключатель.

В отличие от флажков, обладающих собственными именами, группа переключателей объединяется общим именем. Для исходной установки одного из переключателей группы используется атрибут Checked .

Для вставки стандартной кнопки тег Input имеет вид:

При каждом нажатии на кнопку происходит событие kn 1_ onClick .

С помощью языка VBScript можно определить, как различные элементы управления будут реагировать на те или иные события.

HEAD > TITLE >Пример странички с VBScript TITLE >

В данном примере на Web -страницу вставлена кнопка, а сценарий запускается при щелчке на кнопку. Экрана обозревателя после загрузки Web -страницы представлен на рисунке 1.

Visual basic html = vbscript обработка событий

Теперь разберём эту «головоломку» по частям.

Первые три строки — это комментарии. Они не как не влияют на работу сценария. Что бы оставлять комментарии используется ключевое слово «Rem» или единичная клавиша . Комментарии можно оставлять в любом месте кода, но надо учитывать, что после объявления комментария всё содержимое строки, которое идёт дальше, учитываться не будет.

На пятой строке перечислены все переменные, которые мы с вами будем использовать (a, b, c, d). Они бывают явными и не явными, но об это я расскажу попозже. Переменные объявляются ключевым словом «Dim».

С седьмой по десятую строку мы назначаем значение переменных. В данном случае это три числа и строка (10, 20, 40, «пробная срока»). Прошу обратить внимание, что все строки заключаются в ковычки.

На двенадцатой строке мы выводим значение всех переменных при помощи функции MsgBox. В данном примере у нас вылезет окошко с числом 10, а после нажатия кнопки «ОК» вылезет окошко с числом 20 и т.д. .

На мой взгляд, всё понятно, но мне не нравится чересчур большое количество строк. Давайте сократим код. Заодно я расскажу Вам про не явные переменные.

Получить результат выполнения скриптов из IE

Добрый день, коллеги.

Облазил миллион форумов в т.ч. иноязычных, и совсем отчаялся получить ответ. Хотя проблема, на первый взгляд, элементарная.

В текстовую переменную нужно получить тект HTML страницы. Функция вида: str$ = getText(url)

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

Неужели нет более простого и изящного инструмента для того, чтобы тупо сграбить текст из браузера?

04.04.2015, 16:47

Приоритет выполнения и прерывание скриптов
Спасибо всем, кто обратил внимание на тему. Есть 2 скрипта, №2 запускается по событию и его.

Получить результат выполнения JavaScript’a
Доброго времени суток, есть сайт, на котором всего одна кнопка и несколько textbox’ов. В OnClick.

Получить результат выполнения метода
Доброго времени суток! Помогите разобраться с проблемой, пожалуйста. В ООП только начала.

Как получить результат выполнения функции
Как в делфи 7 можно получить результат выполнения функции на web-странице без использования.

Получить из Oracle в Access результат выполнения процедуры
Добрый день всем! В книге вычитал, что запросы напрямую к серверу в Access (dbSQLPassThrough).

04.04.2015, 17:03 2
Visual Basic
04.04.2015, 17:35 [ТС] 3

К сожалению, в результате работы кода строчки «No odds found» нет, выдается все тот же код, а не текст страницы:

04.04.2015, 18:33 4

Решение

Freshman1976, Получить текст страницы можно, например, так :

Visual Basic
04.04.2015, 18:33
04.04.2015, 18:39 [ТС] 5
04.04.2015, 21:05 6
04.04.2015, 21:25 7
05.04.2015, 01:05 [ТС] 8

Друзья, все оказалось значительно проще, дело даже не в том, как к браузеру прикручивать, я обошелся в своем коде без этого:

Золото оказалось для меня вот тут — .Document.Body.InnerText. В своих поисках я пошел по ложному пути, в итоге завел меня этот путь аж до Селениума, а оказалось, что нужно было копать в другом направлении

В итоге все работает, еще раз спасибо, тему можно закрыть.

Добавлено через 7 минут
ЗЫ. Возможно проблема была еще и в том, что «No odds found» появляется в тексте getText$ не сразу после выполнения

Visual Basic

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

WScript in VB.NET?

This is a snipet of code from my program:

But for some reason, «WScript» is not declared. I know that this code works in VBScript but i’m trying to get it to work with vb.net. Whats going wrong?

1 Answer 1

The WScript object is specific to Windows Script Host and doesn’t exist in .NET Framework.

Actually, all of the WScript.Shell object functionality is available in .NET Framework classes. So if you’re porting VBScript code to VB.NET, you should rewrite it using .NET classes rather than using Windows Script Host COM objects.

If, for some reason, you prefer to use COM objects anyway, you need to add the appropriate COM library references to your project in order to have these objects available to your application. In case of WScript.Shell , it’s %WinDir%\System32\wshom.ocx (or %WinDir%\SysWOW64\wshom.ocx on 64-bit Windows). Then you can write code like this:

Alternatively, you can create instances of COM objects using

and then work with them using late binding. Like this, for example * :

Visual basic html = vbscript обработка событий

Copyright© 1998 Моховой Алексей. wanderfly@chat.ru

Все примеры скриптов действуют только в MSIE 3.0 и выше!

Предисловие.


Я не ошибусь, если назову Бейсик (BASIC — Begginners Allpurpose Symbolic Instruction Code, т.е символический командный универсальный код для начинающего :) самым простым языком программирования. Даже при небольшом опыте, программы можно писать практически не задумываясь. Свою историю этот язык программирования высокого уровня начал в далеком 1963 году. Именно тогда небольшой группой студентов последнего курса Дортмутского колледжа под чутким руководством профессора Дж. Кемени и была разработана самая первая версия этого языка. В то время, помимо Бейсика, широко были распространены также Fortran, Cobol, Algol, PL/1, Focal и Pascal. Из них, до настоящего времени дожили, пожалуй лишь Паскаль и Бейсик, сильно изменившись при этом.

Как это не прискорбно для ярых противников Microsoft, но именно эта компания способствовала широкому распространению Бейсика (вспомним Quick Basic). По моему опыту писать на нем было удобнее, чем на Turbo Bacic компании Borland, которая более известна по языку C++. Повсеместная «Виндуализация» PC компьютеров, вынудила к разработке версии Бейсика для Windows приложений. Таким клоном в 1991 году стал Visual Basic, позволяющий визуально создавать прикладные программы, довольно приличного уровня. Но все же, по моему мнению, из за простоты Visual Basic сдает свои позиции тем же Си и Java. С появлением всемирной сети Internet, и языка HTML стало возможным создание активных приложений на веб страницах. Единственным языком для этих целей был Java Script. Да, именно был. Когда свет увидел Microsoft Internet Explorer 3.0, в нем, помимо поддержки Java script появилась и поддержка Visual Basic Scripting Edition, или просто VBscript. Как известно, JavaScript был разработан Netscape и поначалу стал известен как LiveScript. После шумихи вокруг Java, Netscape переименовала его в JavaScript, когда получила лицензию от Sun. Microsoft самостоятельно разработала JScript для своего броузера, за что правда тоже не избежала разбирательств с Sun.

Кроме Java, MSIE3.0 (и выше), может еще и исполнять программы на VBScript. Netscape Navigator не поддерживает пока (надеюсь, что пока) VBScript, поэтому этот язык не очень широко применяется, а многим даже не известен. А жаль, человеку умеющему писать на обычном QB достаточно месяца, а то и меньше, чтобы перейти на VBscript и создавать красивые активные веб страницы, ни чем не уступающие страницам с JavaScript и даже во многим превосходящие их. Поэтому, если с надеждой смотреть в будущее, то изучить VBScript можно уже сейчас. В этой статье я попытаюсь рассказать основы VBScript, не вдаваясь в тонкости. Моя цель, только заинтересовать рядового пользователя и начинающих WebДизайнеров. Вот и все из истории:) Начнем.

Cравнение VBScript и JavaScript.

Прежде чем начинать познавать VBScript, давайте сравним две одинаковые, простые программы на JS и VBS. Это будет полезным для тех, кто знает JavaScript (к коим я не отношусь:(.
Суть программы: вводим текст в верхнее поле, нажимаем кнопку «Скопировать» и текст копируется в нижнее поле.

Visual Basic

Да, как видно, различий практически нет. JS поддерживает только функции, VBS и функции и процедуры (подпрограммы). Так же следует отметить, что VBS отличие от JS не чувствителен к регистру символов, т.е. для него что copyfun(), что CoPYfuN() — один пес:). Так что можете сделать выводы, тем, кто знает ява скрипт, будет легко освоить VBS, а тем кто не знает пока ни того не другого будет еще легче, поскольку переучиваться не придется. Учиться лучше на примерах, поэтому постараюсь их здесь приводить побольше. Я надеюсь, что Вы хотя бы умеете писать программы на обыкновенном Бейсике (QB или TB)? Тогда эта статья именно для Вас.

От QuickBasic до VBscript — один шаг.

Начнем изучение не стандартным подходом. Обычно сначала все пишут программу, выводящую на экран строку «ПРИВЕТ ПИПЛЫ :)» Мы же попробуем перевести обычную «Бейсиковскую» программу — на VBscript, чтобы показать — как между ними много общего. Поставим задачу, написать программу, которая бы случайным образом загадывала число от 1 до 100, и предлагала Вам его угадать. При неправильном предположении, программа должна выводить сообщение о том, больше загаданное число или меньше. Ведется подсчет попыток. В случае победы выводится поздравление.

Программа на обычном Бейсике:

Как видите, такая программа пошла бы даже на БК0010:) Я даже оставил ненавистные операторы GOTO (интересно, об них еще помнят?). Для тех кто не понимает, опишу алгоритм:

10 очистка экрана и включение генератора случайных чисел.
20 переменной «a» присваивается целое случайное значение
от 1 до 100, счетчику числа попыток присваивается
значение=1.
30, 40 выводится сообщение.
50 ввод Вашего варианта «v».
60 если загаданное число больше Вашего варианта, то
выводится сообщение, на единицу увеличивается счетчик
попыток и программа отправляется на строку 40.
70 если загаданное число меньше Вашего варианта, то
выводится сообщение, на единицу увеличивается счетчик
попыток и программа отправляется на строку 40.
80 Если числа совпадут то выводится поздравление, кстати,
по идее, проверку этого условия можно и опустить.
90 THE END

Использование WebBrowser и MSHTML в VB. Часть 2

Перехват и обработка событий.

Способы загрузки содержания обсуждались в предыдущей статье. Здесь речь пойдёт о различных способах обработки событий html-документа. Использование vbscript и javascript не рассматривается по идеологическим соображениям.

Событие BefoNavigate

Самый простой способ создать реакцию на действие пользователя — использовать событие BefoNavigate элемента управления WebBrowser. Оно возникает перед началом загрузки нового документа, например, при нажатии ссылки в текущем документе. Для того, чтобы определить какой из пунктов выбран — анализируется текст ссылки. В данном примере есть ещё одна особенность. Для удаления полосы прокрутки используется строка ‘body ‘.

Простая страница с VBScript

Простая веб-страница

Вы можете создать простую веб-страницу, код которой показан ниже, и проверить её работу в Internet Explorer (другие браузеры не поддерживают VBScript). Если вы щёлкните по кнопке на странице, вы увидите VBScript в действии.

Результат выполнения этого сценария не приводит в восторг. Здесь просто выводится на экран диалоговое окно с текстом. В оригинальной документации в этом примере выводится фраза на латинском языке «Mirabile visu», которую я перевёл как смог (возможно, не совсем правильно))). Однако это даёт представление о том, как встраивать сценарии в веб-страницу.

Когда Internet Explorer читает страницу, он находит тег

Сценарии для администрирования (Часть 2)

Содержание

Visual Basic Script

Зачем нужны VBS-скрипты

VBS-скрипт — это мощное решение для автоматизации действий пользователя в системах семейства Windows. Такой тип сценариев обычно используется для:

  • создания сложных сценариев;
  • использования объектов из других приложений и библиотек;
  • скрытия окон в ходе выполнения сценария;
  • шифрования логики сценария.

В основном VBS-сценарии применяются для обработки данных, управления системой, работы с учетными записями пользователей и компьютеров, взаимодействия с офисными приложениями, работы с базами данными и прочих сложных задач.

Основные положения

В зависимости от языка сценария, содержания и шифрования встречаются такие типы скриптов:

  • vbs — Visual Basic Script
  • vbe — зашифрованный Visual Basic Script
  • js — Java Script
  • jse — зашифрованный Java Script
  • wsh — настройки скрипта
  • wsf — XML-интегрированный сценарий

В этой статье я буду рассматривать сценарии типа vbs.

Сценарии обычно редактируются в блокноте Windows, но я рекомедую использовать Notepad2, который подсвечивает ключевые слова языка Visual Basic и помогает форматировать тело сценария. Итак, vbs-сценарий — это обычный текстовый файл с именем *.VBS, который легко править в блокноте, а запускать на исполнение — двойным щелчком мыши или вызовом по имени в консоли.

Как уже было описано выше, сценарии не компилируются, а интерпретируются. То есть для обработки скрипта в системе должен присутствовать интерпретатор языка VBS, и таких интерпретатора в Windows есть даже две штуки: оконный WScript и консольный CScript — оба интерпритатора — это Windows Script Host (WSH).

По умолчанию все скрипты выполняются через WScript, то есть никаких настроек не требуется, но чтобы выполнить скрипт в окне консоли, необходимо запустить его через CScript, либо установить CScript как интерпретатор, используемый по умолчанию. Для этого в командной строке нужно выполнить следующее:

После чего все сценарии будут выполняться в режиме консоли. Возврат в оконный режим осуществляется следующей командой:

В Visual Basic работают следующие правила:

  • длина строки не ограничена;
  • регистр символов не учитывается;
  • количество пробелов между параметрами не учитывается;
  • строку команды можно разрывать, а на месте разрыва нужно вставлять символ » _ «;
  • максимальная длина имени переменной 255 символов;
  • комментарии обозначаются сиволом » ‘ «.

Рекомендуемая структура сценария:

Переменные

По умолчанию переменные в сценариях объявляются автоматически при первом использовании в теле скрипта, если это не запрещено директивойOption Explicit. Если же в начале сценария объявить директивуOption Explicit, то все переменные нужно определять заранее с помощью следующих конструкций:

Константы объявляются в начале сценария с помощью конструкции:

Тип переменной присваивается автоматически после внесения в нее первого значения. В Visual Basic существуют следующие типы данных:

  • empty — неинициализированная переменная;
  • null — пустая переменная;
  • boolean — логический тип, возможные значения: False, True или 0, 1;
  • byte — 8-битное целое число без знака, возможные значения: 0 .. 255;
  • integer — 32-битное целое число, возможные значения: -32768 .. 32767;
  • long — 64-битное целое число, возможные значения: -2147483648 .. 2147483647;
  • currency — денежный тип, возможные значения: -922337203685477,5808 до 922337203685477,5807;
  • single — число с плавающей точкой, возможные значения: -3.402823e38 .. -1.401298e-45 для отрицательных чисел и 1.401298e-45 .. 3.402823e38 для положительных чисел;
  • double — число с плавающей точкой, возможные значения: 1.79769313486232e308 .. -4.94065645841247e-324 для отрицательных чисел и 4.94065645841247e-324 .. 1.79769313486232e308 для положительных чисел;
  • date — дата, возможные значения: 01.01.1900 и 31.01.9999;
  • string — строковая переменная, вместимость до 2 миллиардов символов;
  • object — указатель на объект;
  • error — код ошибки.

Данные можно проверять на соответствие типам, а так же переводить из одного типа в другой, если значения позволяют это сделать. Для операций над типами данных используются следующие команды:

Как было сказано выше, Visual Basic не накладывает строгих ограничений на имена переменных, но в то же время существуют рекомендации для названий переменных, чтобы в тексте сценария легко определять тип данных. Для этого перед именем переменной рекомендуется ставить условные символы, которые определяют тип переменной:

  • iValueName — числовые типы
  • sValueName — строковый тип
  • bValueName — логический тип
  • dValueName — дата
  • oValueName — объект
  • cValueName — константа
  • aArrayName — массив

В VBS-сценариях возможно использование массивов переменных, которые позволяют хранить списки, таблицы и даже более сложные конструкции. Одномерные массивы (списки) могут быть динамическими, то есть они позволяют изменять свою размерность в ходе работы сценария. Все массивы объявляются командойDim:

Пример использования массивов

Прежде, чем пользоваться динамическим массивом, ему нужно указать текущую размерность с помощью командыReDim, после чего массив можно переформировать в любом месте сценария, при этом либо очистить весь массив, либо сохранить старые значения ячеек командойPreserve:

Чтобы узнать размерность массива, обычно пользуются функциейUBound, которая будет рассмотрена ниже вместе с остальными функциями работы с данными.

Ветвления по условию

Ни один полноценный сценарий не обходится без ветвлений, ветвления помогают выбрать верный путь при выполнении или невыполнении какого-то заложенного условия. Иными словами, ветвления реализуют логику сценария. В VBS-сценариях реализованы несколько механизмов ветвлений. Рассмотрим их по порядку.

Конструкция для одного действия, выполняемого по условию:

Конструкция для нескольких действий, выполняемых по условию:

Конструкция «развилка на несколько путей» (вариант сIf):

Во всех приведенных выше конструкциях применяется следующее правило: «Если выполняется условие , то произвести список действий , которые расположеные под текущем блоком условия. Если текущее условие не выполняется, то перейти к списку действий под командойElse.»

Конструкция «развилка на несколько путей» (вариант сSelect):

В данной конструкции работает правило: «Если значение переменной равно значению , то произвети список действий под этим значением, иначе перейти к проверке следующего значения .»

Циклы

Для организации повторяющихся действий или перебора элементов массива обычно используются циклы. В VBS-сценариях организованы несколько видов циклов: обычный цикл, цикл с неизвестным количеством итераций, цикл по условию.

Обычный цикл организуется структуройFor — Next, в аргументах которой задаются такие параметры как имя счетчика ( ), начальное значение счетчика ( ), конечное значение счетчика ( ) и, при необходимости, шаг счетчика (Step ).

Если в процессе работы цикла потребуется прекратить перебор значений, то это можно сделать с помощью командыExit For

Цикл с неизвестным количеством итераций обычно применяется для перебора всех значений в коллекции объекта, когда не известна его размерность. Эта структура переберет все значения ( ) массива, переданного как парамер цикла ().

Циклы с условиями применяются для обработки данных, при выполнении какого-то условия. Такие циклы бывают двух видов: с проверкой в начале цикла и с проверкой в конце.

Цикл, пока выполняется условие, с проверкой в начале

Цикл, пока не выполнится условие, с проверкой в начале

Как уже было сказано выше, условия можно ставить в конец цикла. В этом случае тело цикла будет выполнено как минимум один раз. Так же как и в обычных циклах, цикл с условием можно прервать командойExit Do:

Встроенные функции

Чтобы работать с данными и строить свои процедуры и функции, разработчки Visual Basic уже позаботились об основе сценариев — базовых функциях. VBS-скрипты функции для работы с датами, строками и числами, а так же базовые процедуры ввода-вывода и процедуры работы с сетью. Давайте вкратце рассмотрим встроенные функции.

Функции обработки дат:

Функции обработки строк:

И, естественно, помимо упомянутых функций, сценарии поддерживают все простейшие математические и логические операции:

  • = — оператор присваивания;
  • + — сумма двух чисел;
  • — — вычитание двух чисел;
  • * — умножение двух чисел;
  • / — деление двух чисел;
  • \ — целочисленное деление двух чисел;
  • Mod — остаток от деления двух чисел;
  • ^ — возведение в степень;
  • & — соединение двух строк;
  • Is — сравнение двух объектов;
  • Eqv — сравнение двух выражений;
  • Not — логическая операция отрицания;
  • And — логическая операция конъюнкции;
  • Or — логическая операция дизъюнкции;
  • Xor — логическая операция исключения;
  • Imp — логическая операция импликации.

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

Пользовательские функции

Сценарии, написанные на Visual Basic, позволяют определять пользовательские процедуры и функции и вызывать их из основной программы. Между процедурой и функцией практически нет никакого различия, разница заключется в логическом смысле этих подпрограмм: функции обычно используются для вычисления какого-то значения, а процедуры — для выполнения действий. Тем не менее и процедуры, и функции могут выполнять операции и передавать значения основной программе. Несмотря на это, все же не стоит забывать о предназначении этих подпрограмм: функции — для вычисления, процедуры — для действий.

Функция объявляется операторомFunction, после которого следует название пользовательской функции, которое не должно совпадать ни с одним зарезервированным словом языка Visual Basic, далее указываются переменные, которые будут передаваться подпрограмме в качестве параметров — указание переменных в этой конструкции означает выделение ячеек памяти для переменных подпрограммы (объявление переменных для функции). В теле подпрограммы структура сценария ничем не отличается от обычной программы (здесь можно объявлять дополнительные переменные, поизводить операции, использовать другие функции и процедуры), в конце тела должен присутствовать оператор присвоения функции какому-то значению — это значение и будет возвращено основной программе. Прервать выполнение функции можно операторомExit Function, но в этом случае нужно не забыть присвоить функции какое-то значение, иначе сценарий выдаст ошибку. Завершается функция операторомEnd Function.

Процедура определяется аналогично функции, но другим оператором -Sub. Так как процедура не возвращает основной программе никаких значений, то оператора присвоения перед выходом из процедуры нет. Прервать выполнение процедуры можно с помощью командыExit Sub, а завершается вся конструкция операторомEnd Sub. Чтобы в основной программе вызвать процедуру, необходимо использовать ключевое словоCallи имя функции с необходимыми аргументами. (Ключевое словоCallне является обязательным, но я рекомендую его использовать чтобы избежать неправильных вызовов процедуры.)

Кстати, процедуры и функции должны располагаются в конце сценария.

Во время работы подпрограммы значения переменных основной части скрипта не изменяются, даже если в подпрограмме есть одноименные переменные. Чтобы подпрограмма имела возможность менять значения переменных основного сценария, необходимо в аргументах подпрограммы задать свойство переменных как ByRef. По умолчанию все переменные определяются со свойством ByVal.

Обработка ошибок выполнения сценария

По умолчанию все ошибки обрабатываются сценарием в автоматическом режиме, и, при возникновении ошибки, работа сценария останавливается. Для отключения автоматической обработки ошибок нужно использовать специальную директивуOn Error Resume Next, которая отключает автоматическую обработку ошибок и продолжает работы сценария даже при их наличии. Для ручной обработки ошибок необходимо обратится к встроенному объектуErr, который хранит в себе статус ошибок. Объект Err имеет следующие свойства и методы:

Пример ручной обработки ошибки:

Объекты, их методы и свойства

VBS-сценарии, как и их родитель — язык Visual Basic, является объектно-ориентированным языком программирования, то есть основной концепцией является понятие объектов и классов

Класс — это тип, описывающий устройство объектов. Объект подразумевает под собой нечто, что обладает определённым поведением и способом представления, объект — это экземпляр класса. Класс можно сравнить с чертежом, согласно которому создаются объекты. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области.

Итак, чтобы работать с объектом, его нужно сначала создать, используя классы из нужной библиотеки:

Удалить объект можно, присвоив ему значение Nothing:

Все объекты, с которыми работает Windows Script Host, имеют методы и свойства. Чтобы обратиться к методу, необходимо указать объект, а через точку — метод с необходимыми параметрами.

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

Пример. Создание объекта файловой системы, обращение к методу создания папки, удаление объекта.

Обратите внимание, что понятие «объект» относится к логике сценария, а не к логике файловой системы. То есть, когда мы говорим «удаление объекта», мы имеем ввиду логический объект сценария, который никак не влияет на удаление каких-то частей файловой системы.

Чтобы узнать, какие существуют библиотеки в Вашей операционной системе, включенные в библиотеки классы, их методы и свойства, можно воспользоваться проводником объектов, например из Microsoft Word:

  1. Запустить MS Word.
  2. В главном меню выбрать Tools -> Macro -> Visual Bacis Editor
  3. В окне редактирования макросов выбрать View -> Object Browser

Если какая-то библиотека не отражена в списке, то ее можно подключить через меню Tools -> References.

В сценариях есть методы, не входящие ни в какой класс, они доступны непосредственно в теле сценария:

Пример вывода диалогового окна с запросом текста, а после этого вывод на экран оконного сообщения с введенным текстом.

Методы и свойства корневого класса WScript

Методы и свойства корневого класса WScript, не требуют создания объекта — они автоматически доступны для использования непосредственно в теле сценария.

Применение этих методов и свойств более подробно мы разберем в примерах других классов.

Методы и свойства класса Shell

Для работы с операционной системой используется специальный класс Shell, который позволяет выполнять такие операции как запуск программ, изменение реестра, создание ярлыков, доступ к системным папкам и системным переменным, доступ к системному журналу. Итак, методы и свойства класса Shell:

Пример. Использование методов и свойств класса Shell.

Методы и свойства класса Network

Как мы уже убедились, VBS-сценарии могут работать с оболочкой Windows, но это не единственная их возможность. С помощью класса Network можно получить доступ к сетевым объектам и управлять ими. Давайте подребнее разберем класс Network:

Пример. Использование методов и свойств класса Network.

Методы и свойства класса FileSystemObject

Очень часто в сценариях встречаются такие случаи, когда необходимо что-то создать, удалить, переместить или изменить на диске компьютера. Эту задачу позволяет решить класс FileSystemObject, предназначенный для работы с файловой системой. Ниже перечисленны объекты, которые может создать этот класс:

  • FileSystemObject — главный объект, который позволяет создавать, удалять, управлять дисками, папками и файлами в общем;
  • Drive — объект, позволяюший собирать информацию о дисках системы;
  • Drives — объект, хранящий в себе список дисков системы;
  • Folder — объект, позволяющий создавать, удалять, перемещать папки, а также собирать информацию о них и их содержимом;
  • Folders — объект, хранящий в себе список подпапок указанной папки;
  • File — объект, позволяющий создавать, удалять, перемещать файлы, а также собирать информацию о них;
  • Files — объект, хранящий в себе список файлов указанной папки;
  • TextStream — объект, позволяющий читать и создавать текстовые файлы.

Методы и свойства класса FileSystemObject (главного объекта):

Объекты Drives, Folders и Files класса FileSystemObject хранят в себе информацию о дисках, папках и файлах и, в основном, используюся для сбора информации о файловой системе. Они имеют только два свойства:

Чтобы было более понятно, что же такое коллекция объектов, рассмотрим пример вывода на экран списка файлов корня диска C:

Объект Drive предоставляет доступ к свойствам локального или сетевого диска:

Объект Folder предоставляет доступ ко всем свойствам папки, а также позволяет производить над ней действия:

Объект File аналогичен объекту Folder — он предоставляет доступ ко всем свойствам файла, а также позволяет производить над ним действия:

Объект TextStream — это инструмент доступа к содержимому файла. С помощью него можно читать и изменять файл:

Мы познакомились со всеми методами и свойствами класса FileSystemObject, рассмотрим пример использования этого класса:

Сценарий «Удаление старых файлов»

Данный сценарий предназначен для очистки системы от устаревших файлов во временных каталогах Windows и профилях пользователей. В этом примере можно увидеть как работают практически все вышеописанные конструкции: структура сценария, название переменных, работа с массивами и коллекциями, ручная обработка ошибок, считывание системных переменных, создание текстового файла журнала работы сценария, работа с файловой системой, использование процедур.

Итак, мы познакомились с основами сценариев Visual Basic Script. Давайте подведем итог, и определим достоинства и недостатки таких сценариев:

  • сценарии не требуют компиляции и их код в любой момент можно отредактировать;
  • VBS-сценарии практически не ограничены в функциональности и могут использовать различные системные библиотеки и объекты других приложений;
  • VBS-файлы могут выполняются как в консоли, так и в оконном режиме, поэтому пользователь может контролировать видимость хода выполнения сценария;
  • VBS-сценарии позволяют использовать пользовательские процедуры и функции;
  • этот язык идеально подходит для работы со строковыми и числовыми переменными, датами, а также для обработки текстовых файлов, управления системой и доменом;
  • VBS-сценарии сложны в написании и требуют навыков программирования;
  • такие сценарии работают только в операционных системах семейства Windows.
Илон Маск рекомендует:  Asp структура метабазы
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL
Java Script VB Script