MsgBox
является константа, соответствующая нажатой в диалоговом окне кнопки (в нашем примере такими константами являются vbOk
и vbCancel
). Таким образом, MsgBox
может использоваться в сценариях для организации выбора пользователем одного из возможных вариантов, однако это не совсем удобно, т.к. надписи на кнопках нельзя задавать произвольным образом (можно указать только OK, Отмена, Стоп, Повтор, Пропустить, Да и Нет).
Метод
С помощью метода Popup
(подробное описание метода приведено в MsgBox
, причем этот метод можно использовать как в VBScript-, так и в JScript-сценариях (листинги 2.12 и 2.13).
Popup
(JScript) /*******************************************************************/
/* Имя: Popup.js */
/* Язык: JScript */
/* Описание: Пример использования метода WshShell.Popup */
/*******************************************************************/
var WshShell,Res,Text,Title; //Объявляем переменные
//Инициализируем константы для диалоговых окон
var vbOkCancel=1,vbOk=1;
//Создаем объект WshShell
WshShell = WScript.CreateObject('WScript.Shell');
Text='Пример вывода строк в диалоговое
окно WScript';
Title='Заголовок'
//Выводим диалоговое окно на экран
Res=WshShell.Popup(Text,0,Title,vbOkCancel);
// Определяем, какая из кнопок была нажата в диалоговом окне
if (Res==vbOk) WshShell.Popup('Нажата кнопка OK');
else WshShell.Popup('Нажата кнопка Отмена');
/************* Конец *********************************************/
Popup
(VBScript) '*******************************************************************
' Имя: Popup.vbs
' Язык: VBcript
' Описание: Пример использования метода WshShell.Popup
'*******************************************************************
Option Explicit
Dim WshShell,Res,Text,Title ' Объявляем переменные
' Создаем объект WshShell
Set WshShell = WScript.CreateObject('WScript.Shell')
Text='Пример вывода строк в диалоговое' & vbCrLf & 'окно WScript'
Title='Заголовок'
' Выводим диалоговое окно на экран
Res=WshShell.Popup(Text,0,Title,vbOkCancel)
' Определяем, какая из кнопок была нажата в диалоговом окне
If (Res=vbOk) Then
WshShell.Popup 'Нажата кнопка OK'
Else
WshShell.Popup 'Нажата кнопка Отмена'
End If
'************* Конец *********************************************
Главным отличием метода Popup
от функции MsgBox
является наличие параметра nSecToWait
Ввод строк текста
Для организации в сценариях диалога с пользователем необходимо уметь принимать вводимые с клавиатуры строки текста. В консольном и графическом режимах ввод информации осуществляется по- разному: при запуске сценария с помощью cscript.exe мы имеем доступ к стандартному входному потоку StdOut
, при использовании wscript.exe можно применять функцию InputBox
языка VBScript.
Ввод строк в консольном режиме
Самый простой способ ввести строку в консольном режиме предоставляет метод WScript.StdIn.ReadLine
, при использовании этого метода ввод завершается нажатием клавиши <Enter>.
Отметим, что при использовании стандартного входного потока WScript.StdIn
в Windows ХР (по крайней мере в той версии, которой пользовался автор) возникает проблема, связанная с кодировкой символов кириллицы. Дело в том, что метод WScript.StdIn.ReadLine
возвращает строку в DOS-кодировке, а для вывода на экран с помощью методов WScript.StdOut.WriteLine
или WScript.Echo
строка должна быть в Windows-кодировке (в предыдущих версиях Windows метод WScript.StdOut.WriteLine
требовал строку в DOS-кодировке). Поэтому для корректного отображения символов кириллицы на экране приходится применять дополнительные функции конвертации из DOS- в Windows-кодировку. Стандартных методов или функций, предназначенных для этой цели, в языках JScript и VBScript нет, поэтому такие функции следует написать самостоятельно.
Рассмотрим сначала написанную на JScript функцию конвертации DosToWin из листинга 2.14:
function DosToWin(s) {
var i,ss; //Объявляем переменные
//Проверяем, создан ли объект RusDict
if (typeof(RusDict)=='undefined')
//Если объект RusDict не создан, создаем его
MakeRusDict();