окна, создаваемого внутренней функцией InputBox
(рис. 2.6).

Рис. 2.6. Диалоговое окно со строкой ввода
Пример сценария, использующего функцию InputBox
, представлен в листинге 2.18 (подробное описание параметров функции InputBox см. в
'*******************************************************************
' Имя: InpBox.vbs
' Язык: VBScript
' Описание: Пример использования функции InputBox
'*******************************************************************
Option Explicit
Dim s,s1 ' Объявляем переменные
s1='Пример' & vbCrLf & 'диалогового окна' & vbCrLf & 'для ввода строки'
' Выводим диалоговое окно со строкой ввода на экран
s=InputBox(s1,'Диалоговое окно VBScript')
' Выводим диалоговое окно с введенной строкой
MsgBox 'Было введено: ' & s
'************* Конец *********************************************/
К сожалению, ни в языке JScript, ни в объектной модели WSH нет функции или метода, позволяющих напрямую создавать диалоговые окна со строкой ввода. Однако при помощи файлов сценариев с XML- разметкой, описанных вInputBox
в частности) можно использовать внутри JScript-сценария (соответствующий пример приведен в листинге 3.11).
Получение свойств WSH и запущенного сценария
На практике часто бывает необходимо знать определенные атрибуты WSH (например, с помощью какого приложения-сервера был запущен сценарий) и сценария, работающего в данный момент (например, имя этого сценария или путь к каталогу, в котором он находится). Некоторые параметры WSH и исполняемого сценария можно определить непосредственно с помощью соответствующих методов объекта WScript
:
? полный путь к приложению-серверу (cscript.exe или wscript.exe);
? имя каталога, в котором находится приложение-сервер;
? номер используемой версии WSH;
? полный путь к исполняемому сценарию;
? имя исполняемого сценария.
Для проверки режима, в котором был запущен сценарий, можно предложить функцию IsCScript
(ниже приведена реализация этой функции на языке JScript), которая будет возвращать true
, если использовался хост cscript.exe (консольный режим), и false
, если использовался wscript.exe (графический режим):
function IsCScript() {
//Проверка режима, в котором запущен сценарий
return ('с'== WScript.FullName.toLowerCase().charAt(WScript.FullName.length - 11));
}
Как мы видим, вся работа функции IsCScript
состоит в определении того, с какой буквы начинается имя приложения-сервера ('с' для cscript.exe или 'w' для wscript.exe).
Полный путь к текущему каталогу, т.е. к каталогу, из которого был запущен сценарий, хранится в свойстве CurrentDirectory
объекта WshShell
.
Если сценарий был запущен не из того каталога, в котором находится сам файл со сценарием, то текущий каталог не будет совпадать с каталогом сценария. Для того чтобы получить путь к каталогу сценария, нужно выделить этот путь из свойства WScript.ScriptFullName
, содержащему полный путь к выполняемому сценарию (включая имя файла). На языке JScript это можно реализовать с помощью функции GetScriptDir
следующего содержания:
function GetScriptDir() {
var ScriptDir;
ScriptDir = WScript.ScriptFullName;
ScriptDir = ScriptDir.substring(0, ScriptDir.lastIndexOf('\'));
return ScriptDir;
}
Полные тексты сценариев на языках JScript (PropScript.js) и VBScript (PropScript.vbs), выводящих на экран сведения о свойства WSH и запущенного сценария, приведены в листингах 2.19 и 2.20 соответственно; результат работы сценария PropScript.js представлен на рис. 2.7.

Рис. 2.7. Результаты выполнения сценария PropScript.js в графическом режиме
/*******************************************************************/
/* Имя: PropScript.js */
/* Язык: JScript */
/* Описание: Вывод свойств запущенного сценария */
/*******************************************************************/
//Проверка режима, в котором запущен сценарий
function IsCScript() {
return ('c'== WScript.FullName.toLowerCase().charAt(WScript.FullName.length - 11));
}
//Возвращает каталог, содержащий запущенный сценарий
function GetScriptDir() {
var ScriptDir;
ScriptDir = WScript.ScriptFullName;
ScriptDir = ScriptDir.substring(0, ScriptDir.lastIndexOf('\'));
return ScriptDir;
}
/******************* Начало **********************************/
var WshShell,s; //Объявляем переменные
//Создаем объект WshShell
WshShell=WScript.CreateObject('WScript.Shell');
s=' Свойства запущенного сценария:
';
//Проверяем, в каком режиме был запущен сценарий
if (IsCScript()) s+='Запущен в консольном режиме
';
else s+='Запущен в графическом режиме
';