Visual Basic Script


Windows Script Host (WSH) - запуск программ


В предыдущей статье я рассказал об основах WSH и привел пример скрипта для работы с реестром (добавление и удаление записей). Здесь мне бы хотелось продолжить обсуждение этой интересной темы и предложить вашему вниманию еще несколько скриптов, полнее раскрывающих возможности Windows Script Host.

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

//Пример запуска программы с диалоговым окном запроса //на JScript var vbOKCancel = 1; var vbInformation = 64; var vbCancel = 2; var Message = "Вы действительно хотите запустить программу Notepad?"; var Title = "Подтвердите действие"; Welcome();

var WSHShell = WScript.CreateObject("WScript.Shell"); WSHShell.Run("notepad",5);

function Welcome() { var WSHShell = WScript.CreateObject("WScript.Shell"); var intDoIt;

intDoIt = WSHShell.Popup(Message, 0, Title, vbOKCancel + vbInformation ); if (intDoIt == vbCancel) { WScript.Quit(); } }

В первых пяти строках описываются переменные, которые нам потребуются при вызове функции Welcome(). Эта функция выдает на экран окно с запросом на запуск программы и в случае положительного ответа продолжается выполнение скрипта. Если ответ отрицательный, выполнение прерывается. Строка

WSHShell.Run("notepad",5);

запускает Блокнот. Мы еще рассмотрим ее подробнее чуть позже, а пока обратите внимание на то, что объект WSHShell создается дважды: один раз в функции Welcome() и второй раз непосредственно перед запуском Блокнота. Закономерный вопрос: а нельзя ли обойтись одним созданием объекта? Если закомментировать строку перед запуском Блокнота и попробовать опять запустить скрипт, то будет выдана ошибка что определение WSHShell отсутствует. Почему так происходит? Ведь функция Welcome() вызывается до запуска программы и следовательно создание объекта WSHShell происходит до вызова метода запуска программы. Да простят меня программисты за то, что мне приходится подробно описывать такие элементарные вещи, но не все знакомы с программированием и с таким термином как "область видимости". Так как объект WSHShell создается внутри функции, то он будет существовать только до тех пор, пока мы из этой функции не выйдем. Т.е. за пределами Welcome() объекта WSHShell нет, поэтому и появляется ошибка. Давайте немного модифицируем скрипт, чтобы объект WSHShell описать только один раз:




Начало    Вперед