Vbscript что это такое
Vbscript что это такое
Все примеры скриптов действуют только в MSIE 3.0 и выше!
Предисловие
Как это не прискорбно для ярых противников 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 (к коим я не отношусь:(.
Суть программы: вводим текст в верхнее поле, нажимаем кнопку «Скопировать» и текст копируется в нижнее поле.
Java Script | VB Script |
Поставим задачу, написать программу, которая бы случайным образом загадывала число от 1 до 100, и предлагала Вам его угадать. При неправильном предположении, программа должна выводить сообщение о том, больше загаданное число или меньше. Ведется подсчет попыток. В случае победы выводится поздравление.
Программа на обычном Бейсике:
Как видите, такая программа пошла бы даже на БК0010:) Я даже оставил ненавистные операторы GOTO (интересно, об них еще помнят?). Для тех кто не понимает, опишу алгоритм:
Код типичной страницы со скрипт программой будет выглядеть примерно так:
Итак, напишем программу реализующую заданные условия с помощью VBscript
Нажмите на кнопку «Загадать число» и угадайте его:)
КОД ПРОГРАММЫ:
При загрузке документа появится окошко с данной надписью и кнопкой ОК
Разумеется, данный пример Вы можете использовать только как шутку на ссылку «xxx», потому что нажать на нее невозможно:) Но если поменять alert «ссылка» на status=»Моя домашняя страница», то это сообщение появится в строке статуса.
Каков полный синтаксис операторов указывающих как «добраться» до данных в поле ввода?
x = top.имя_фрейма.document.имя_формы.имя_объекта_text_box.value
Таким образом, можно добраться до любых данных в окне броузера, даже если они расположены в другом фрейме.
Подведем первые итоги. VBscript перенял от обычного Бейсика большинство операторов и функций (математических, преобразования данных и т.д.). Отличие выражается в специфических операторах ввода-вывода информации из окна броузера и возможных событиях, которые могут «случиться» при взаимодействии пользователя и страницы.
Справочная информация. Некоторые операторы и функции
Чтобы Вам было легче экспериментировать в написании скриптов, приведем основные операторы и функции VBscript. А то начнете писать PRINT «привет» или пытаться закончить цикл For оператором Next x 🙂
СИНТАКСИС | ПРИМЕР | ОПИСАНИЕ |
Операторы работы с массивами.
Dim имя_массива (индексы) | dim a(10),b(20,30) | Объявление массива |
Erase имя_массива | erase a | Очистка содержимого массива |
переменная = значение | a=137 a=b c=»привет» | Присваивание |
Set переменная = объект | set a=document.forma1 | Присваивание переменной значени ссылки на объект. |
‘ комментарии | ‘ текст |
Rem комментарии | rem текст |
Операторы используемые в выражениях
Call имя_событие | Call but_onclick | Вызов подпрограммы | |||||||||||||||||||||||||||||||
Do . Loop Until условие | Do a=a+1 Loop Until a>=5 | Выполняет код хотя бы один раз, пока условие не будет истинным | |||||||||||||||||||||||||||||||
Do . Loop While условие | Do a=a+1 Loop While a =5 a=a+1 Loop | Повторяет выполнение кода, пока условие не станет истинным | |||||||||||||||||||||||||||||||
Do While условие . Loop | Do While a 1 Then alert»больше» | Выполнение кода при выполнении условия | |||||||||||||||||||||||||||||||
Select Case X Case значение1 действие Case значение2 действие2 . End select | Select Case X Case 10 alert»x=10″ Case 20 alert»x=20″ End select | Выборочное выполнение кода при совпадении значения | |||||||||||||||||||||||||||||||
While условие действие Wend | While a Oбъявление функций и процедур Как вызвать сценарий в VBscriptВеб страница с активным содержимым, всегда делится как бы на две части: Первая, это html код самой страницы содержащий необходимые элементы управления (ссылки, кнопки, формы для ввода информации и т.д.), и Вторая, сценарии на скрипте, которые начинают работать при различных событиях происходящих с элементами управления. Это можно назвать главной отличительной особенностью программ для веб страниц, от обычных исполняемых приложений. Рассмотрим основные приемы вызова сценариев, или процедур. Сценарий вызываемый неявно: Такой способ, по моему мнению, самый простой. Указываем имя оператором name=»имя» в теге характерризующим элемент управления, это же «имя» пишем в вызываемой процедуре и через знак подчеркивания пишем событие, которое должно произойти для исполнения сценария. Вызов сценария определяемый в элементе управления: Такой способ обрадует приверженцев Java Script. Среди его преимуществ, перед первым методом можно отметить то, что один и тот же сценарий можно вызывать из разных элементов управления. Автоматический вызов сценария: Код программы в этом случае выполнится сразу после загрузки документа. Вызов из другой процедуры: Все способы, кроме автоматического вызова сценария, чисто визуально будут выглядеть так: Основные типы данных VBscriptНаверное, те кто знаком со «старым» бейсиком, еще помнят, что для обозначения символьной переменной надо было писать знак бакса или солнышка (a$=»привет»). В VBscript этого делать не следует, он имеет только один тип данных, называемый VARIANT. Он может содержать как символы так и числа разной точности. Поэтому для того, чтобы точно определить тип данных, желательно использовать функции преобразования. К примеру, текст вводимый в поле формы имеет текстовый формат, и попытка сложить цифру «3» с цифрой «2» приведет к результату «32»: Поэтому надо сделать так, чтобы переменные summatext1 и summatext2 были преобразованы в целые числа функцией Cint(переменная): Подтипы данных VARIANT. Некоторые правила VBscriptВ заключении следует упомянуть некоторые основные приемы при написании кода скрипта. Если код не умещается в одной строке, то можно использовать символ продолжения строки: Для «склеивания» двух численных переменных лучше использовать знак «&» чем «+», т.е. a=»при» b=»вет» тогда a&b=»привет» Код сценария желательно, на всякий случай, заключать в теги комментария ЗаключениеЯ уже говорил, что моей задачей не было рассказать все и вся про VBscript, в статье были приведены только справочные данные и основные методы, пригодные для написания простейших сценариев, без применения ActiveX технологии. Тем, кого заинтересовал этот язык программирования, можно порекомендовать книгу (из бумаги 🙂 «Изучаем VBscript» автор Пол Ломакс. Некоторые справочные данные я брал именно из нее. При большой фантазии, на VBscript можно создать и полноценные приложения, как, к примеру Перекодировщик Rus-Translit или HTML редактор. Так что дерзайте! Основы программирования в Microsoft Visual Basic ScriptingРассмотрим следующий вопрос, кому и для чего нужен VBScript? Ответ прост: на мой взгляд, это идеальная платформа для создания простых приложений для рутинных задач быстро и просто. Например, при каждой загрузке необходимо удалять какую-либо папку или файл, пожалуйста. Кроме этого, применяются в следующих областях, использующих продукцию Microsoft: В основном VBS-сценарии применяются для обработки данных, управления системой, работы с учетными записями пользователей и компьютеров, взаимодействия с офисными приложениями, работы с базами данными и прочих сложных задач. Как вариант удобен для вирусописателя, как ни подло это звучит. Только при написании вирусов компиляция практически обязательна. Один из самых громких вирусов, I love you, был написан именно на VBScript, в общем, есть куда расти. Для того, что бы программировать в среде VBScript, без компилятора, вам понадобится Notepad++, в блокноте проще, но лучше когда подсвечивается синтаксис, а также Internet Explorer, так как 80% функционала идет в комплекте с браузером. Для того, что бы программировать с компилятором, нужно установить Visual Basic Scripting Edition. VBS может запускаться в виде текстового файла, или компилированного текстового файла. В отличие от текстового файла, в котором будут видны команды, их можно редактировать, компилированный текстовый файл прочитать не удастся (сплошные крякозябры). Скажем пару слов о спецификации. Описание всего, что поддерживает VBScript, займет много места. В принципе, не бойтесь экспериментировать, пишите код также, как и в VB, если что-то не пойдет, Вы об этом узнаете. Все переменные здесь только Variant (может содержать данные любого типа.). Переменные задаются следующим образом: Dim x – то, что хранит переменная VBScript сам разберется. — Функции: Все функции Visual Basic. Также как и в VB, константа вызывается, например так: vbNo. Теперь приведу пару примеров роботы с VBScript. Напишем программу, которая будет суммировать два числа. Для начала, создадим файл с именем sum.vbs в него запишем следующее: Dim a,b,c ‘переменные для чисел Сохраняем, запускаем, получаем следующее (рисунок анимированный): На первый взгляд все понятно, кроме одного: cint. Так как все переменные у нас Variant, а inputbox возвращает только строку как результат, то строка c = a + b будет интерпретирована как сложение двух строк, а не чисел, при вводе чисел 1 и 2 результат будет 12. Использование функции cint возвращает значение типа Integer, после этого складывает числа. Сохраняем, запускаем, получаем следующее (рисунок анимированный): Теперь объясню более внятно. Во второй строке мы создали объект FileSystemObject в переменной fso. Потом вызвали метод CreateFolder для создания папки, указав в качестве аргумента путь к папке. Потом вызвали метод CreateTextFile для создания файла. Думаю, тут все понятно. Объяснять не будем. Рассмотрим вариант программы посложнее. Нужно узнать спецификацию своего компьютера, то есть полные данные компьютера, которые будут собраны в один файл. ‘где сохранять отчет ‘прочее ‘не завершать скрипт аварийно ‘объект для доступа к файловой системе ‘объект WMI ‘файл отчета ‘узнать имя локального компьютера ‘запросить имя удаленного компьютера ‘проводим инвентаризацию данных машины ‘если ошибка ‘инвентаризация данных компьютера, заданного сетевым именем или IP-адресом Set wmio = GetObject(«WinMgmts: ‘некоторые WMI-классы поддерживаются не во всех версиях Windows ‘файл отчета ‘дата проверки Log «Win32_ComputerSystemProduct», _ Log «Win32_ComputerSystem», _ Log «Win32_OperatingSystem», _ Log «Win32_BaseBoard», _ Log «Win32_BIOS», _ ‘не определяется Core 2 в XP SP2, см. http://support.microsoft.com/kb/953955 Log «Win32_PhysicalMemory», _ ‘пропускаются USB-диски ‘только локальные диски Log «Win32_CDROMDrive», _ ‘только для XP/2003 и выше ‘только для XP/2003 и выше Log «Win32_SoundDevice», _ Log «Win32_SCSIController», _ ‘только для XP/2003 и выше Log «Win32_PortConnector», _ Log «Win32_Keyboard», _ Log «Win32_PointingDevice», _ ‘закрыть файл Const RETURN_IMMEDIATELY = 16 Dim query, cls, item, prop If Len(where) > 0 Then query = query & » Where » & where Dim props, names, num, value num = 1 ‘номер экземпляра ‘взять значение ‘без проверки на Null возможнен вылет с ошибкой ‘если указана кратная единица измерения, перевести значение ‘вывести в файл непустое значение, заменить спецсимвол «;» ‘перейти к следующему экземпляру ‘преобразование даты формата DMTF в читаемый вид (ДД.ММ.ГГГГ) ‘узнать версию (билд) WMI-сервера ‘проверить доступность компьютера в сети ‘количество, порядок и названия столбцов отчета Скриптовый язык для web-страниц VBScriptVBScript для начинающихПрограммирование на Visual Basic Script для опытных программистов особой сложности не представляет. Достаточно почитать документацию, чтобы понять некоторые особенности языка и узнать отличия между VBScript и Visual Basic, а также между VBScript и VBA. Однако полная документация имеется, в основном, на английском языке. Да и начинающему разобраться в ней будет непросто. И если вы решили взяться за VBScript, то представленная ниже книга вам в этом поможет. Где используется VBScript? Применений довольно много. Подробно об этом вы прочитаете в книге. А если коротко, то используется Visual Basic Script для написания сценариев, которые можно сохранить в файл и затем с их помощью выполнять различные рутинные процедуры. Например, очистку диска от ненужных файлов. Кроме этого сценарии можно встраивать в веб-страницы. Поскольку VBScript является, пожалуй, самым простым в освоении языком сценариев, то он широко используется в различных приложениях, таких как SCADA-системы. Например, SCADA-система Reliance использует именно язык Visual Basic Script, который дополнен некоторыми специфическими для данной системы функциями. Ниже приведено содержание книги. Некоторые разделы можно посмотреть непосредственно на этом сайте. Книга пока не закончена, поэтому рекомендую периодически заглядывать на эту страницу, чтобы получить обновлённую версию. С помощью VBScript вы можете быстро создавать собственные страницы или даже писать игры. И все это размещается внутри вашего HTML-документа. Если вы уже имели дело с Visual Basic или Visual Basic for Applications, то легко справитесь и с VBScript. Создание скриптовПри разработке приложения на VBScript необходимо знать концепцию этого языка, а также иметь представление о том, как работают объекты, события и процедуры. Это поможет вам в дальнейшем разобраться в функционировании объектной модели Internet Explorer 3.0 и объектов ActiveX. Помните, что объекты и VBScript связаны друг с другом. ПроцедурыВиды процедурВ следующем примере функция Celsius переводит градусы Фаренгейта в градусы Цельсия. Когда вызывается функция из подпрограммы ConvertTemp, переменная, содержащая параметр-значение, передается в функцию. Результат вычисления возвращается в вызывающую процедуру и отображается в MsgBox. Используйте функции вместо подпрограмм, если требуется возвратить некоторое значение. Использование подпрограмм и функцийДля применения функций в вашей программе необходимо поставить ее название справа от переменной или выражения, в которое будет возвращаться результат выполнения функции, например: Обратите внимание, что круглые скобки опускаются при вызове подпрограммы, если оператор Call не применяется. ОбъектОбъектная модельРассмотрим объект ActiveX Label (объект и элемент управления для VBScript фактически означают одно и то же). Он состоит из свойств и имеет один метод. Некоторые из его свойств включают заголовок (Caption), цвет фона (BackColor), цвет шрифта (ForeColor), размер (FontSize) и стиль шрифта (FontName). Его методом является About Box, отображающий при вызове окно с информацией об ActiveX. Событием для Label является перемещение указателя мыши над Label. Существует специальный тег . Если вы имели дело с программированием на Visual Basic, то использование тегов будет напоминать вам размещение какого-либо компонента или элемента управления на форме. Например, следующие значения тегов Вы можете присваивать или устанавливать свойства, а также вызывать методы точно так же, как с любым средством управления формой. Следующий текст, например, включает элементы Обработчик события нажатия кнопки cmdChangeIt изменяет текст объекта Label: При интенсивном программировании лучше всего использовать программу Microsoft ActiveX Control Pad, великолепно выполняющую связывание команд Visual Basic с разными событиями и элементами управления на вашей страничке. Таким образом, вы можете больше внимания обращать на сам процесс разработки приложения. Установка свойств для элементов управления и объектовУстановка свойств для разных объектов на странице является одной из простейших задач при программировании на VBScript. Стандартная схема этого действия выглядит так: Свойству Caption (заголовок) присваивается строка «Watch me change!». Затем устанавливаются свойства ForeColor (цвет текста), BackColor (цвет фона) и FontName (стиль шрифта). Так можно устанавливать свойства для любого объекта на странице. Обработка событийFOR определяет имя элемента управления или объекта, для которого используется последующий код; EVENT задает событие, при возникновении которого следующий код будет вызван. Следующий фрагмент исходного текста иллюстрирует оба рассмотренных метода. Обработчики события определяются как атрибуты, а также используются как процедуры внутри кода: Следующий пример иллюстрирует вызовы подпрограммы и функции из сценария: Объектная модель Internet Explorer 3.0Таблица 1.
Таблица 2. Таблица 3.
Объект DocumentОбъект Document имеет дело прежде всего с телом HTML-страницы. Он имеет три дочерних объекта: Link, Anchor и Form, каждый из которых является индексированным массивом объектов link, anchor и form. Кроме того, объект Form содержит подобъект Element, который является индексированным массивом всех объектов и элементов управления на странице. Некоторые важные свойства и методы перечислены в табл. 4. Для Document, заметим, не существует никаких событий. Таблица 4.
Объект FrameОбъект HistoryОсновной целью объекта History является доступ к списку введенных адресов в браузере. Существуют три метода, используемых для навигации по папке History. Наиболее важные методы перечислены в табл. 5. Объект History не генерирует никаких событий. Таблица 5. Объект LocationЭтот объект необходим для получения информации относительно текущего расположения Internet Explorer. Наиболее важные свойства перечислены в табл. 6. Этот объект не имеет никаких событий или методов. Таблица 6.
|