Благодаря тому, что при написании скриптов WSH, используется либо VBScript, либо JScript (довольно мощные языки программирования), появляется возможность создавать сценарии, позволяющие получить от пользователя какую-либо информацию, влияющую на процесс работы сценария. Эта важная возможность помогает создавать более гибкие и функциональные сценарии, предусматривающие различные нужны пользователей.
Получить информацию от пользователя можно с помощью диалогового окна или строки ввода информации. Рассмотрим, для начала диалоговые окна. Ниже приведен простой скрипт, выводящий пример диалогового окна и выдающий сообщение о выборе пользователя:
// Диалоговое окно. JScript // http://www.whatis.ru var WSHShell = WScript.CreateObject("WScript.Shell"); // Подготовка переменных для диалогового окна var vbOKCancel = 1; var vbInformation = 64; var vbCancel = 2; var Message = "Пример создания диалогового окна"; var Title = "Нажмите ОК или Cancel"; // Вызов диалогового окна var intDoIt; intDoIt = WSHShell.Popup(Message, 0, Title, vbOKCancel + vbInformation ); // Результат выбора пользователя WScript.Echo(intDoIt);
Вызов диалогового окна осуществляется с помощью метода Popup объекта WSHShell. Первым параметром передается текст, выводимый в диалоговом окне, третьим — заголовок окна, четвертым — набор кнопок и иконка в диалоговом окне. Вот на последнем и остановимся подробнее.
Каждому набору кнопок соответствует цифровая переменная:
0 — ОК;
1 — ОК и Отмена;
2 — Прервать, Повтор, Пропустить;
3 — Да, Нет, Отмена;
4 — Да, Нет;
5 — Повтор, Отмена;
6 — Отмена, Повторить, Продолжить.
Для лучшей читаемости кода удобнее определить переменную с названием, отражающим набор кнопок, в начале сценария, как это сделано в примере, а непосредственно при вызове диалогового окна использовать не цифру, а эту переменную.
Аналогично наборам кнопок, иконки в диалоговом окне определяются с помощью цифровой переменной. Соответствие переменных иконкам:
16 — | ![]() |
32 — | ![]() |
48 — | ![]() |
64 — | ![]() |
Четвертый параметр метода Popup представляет собой сумму переменных набора кнопок и иконки, выводимых в диалоговом окне. Так, если вам надо вывести иконку вопроса и кнопки Да, Нет, Отмена, нужно передать в параметр 32 + 3, т.е. 35.
Создавать диалоговое окно мы научились, теперь неплохо бы узнать какой выбор сделал пользователь. В примере результат выбора в диалоговом окне сохраняется в переменной intDoIt, а потом выводится на экран. Всем кнопкам диалогового окна соответствует числовое значение, которое и возвращается при выборе одной из них. Полный список приведен ниже:
1 — ОК;
2 — Отмена;
3 — Прервать;
4 — Повтор;
5 — Пропустить;
6 — Да;
7 — Нет;
10 — Повторить;
11 — Продолжить.
Таким образом, получив результат выбора пользователя, можно предусмотреть несколько вариантов работы скрипта.
Однако, только кнопками Да, Нет, Отмена и т.п. не всегда можно обойтись. Например, как узнать у пользователя каталог, куда он хочет сохранить какой-то файл? Или букву диска, куда подмапировать сетевой ресурс? В таких случаях поможет строка ввода информации (InputBox). Ниже приведен простой сценарий, демонстрирующий работу такого диалогового окна.
' Диалоговое окно. VBScript ' http://www.whatis.ru Dim s,s1 s1="Введите ваше имя" ' Выводим диалоговое окно со строкой ввода на экран s=InputBox(s1,"Пример получения данных от пользователя") ' Результат ввода MsgBox "Вас зовут " & s
Дальше уже можно обрабатывать введенную информацию в своем сценарии. Вот только есть один небольшой подводный камень: InputBox присутствует только в VBScript. А как быть, если вам надо написать сценарий на языке JScript? В WSH есть возможность объединять несколько сценариев, написанных на одном или разных языках, в один файл. Для этого служат wsf-файлы. Тема эта заслуживает отдельной статьи, но если кратко, то это XML файл, имеющий определенную структуру, в которой, каждый сценарий помещается в отдельный элемент XML, и может обращаться к функциям и переменным из других сценариев. Подробно эта тема будет рассмотрена в одной из будущих статей.