Чтение онлайн

на главную - закладки

Жанры

Windows Script Host для Windows 2000/XP

Попов Андрей Викторович

Шрифт:

Метод Popup объекта WshShell

С помощью метода

Popup
(подробное описание метода приведено в главе 1) можно создавать такие же диалоговые окна, как и при помощи функции
MsgBox
, причем этот метод можно использовать как в VBScript-, так и в JScript-сценариях (листинги 2.12 и 2.13).

Листинг 2.12. Создание диалогового окна с помощью метода
Popup
(JScript)

/*******************************************************************/

/*
Имя: Popup.js */

/* Язык: JScript */

/* Описание: Пример использования метода WshShell.Popup */

/*******************************************************************/

var WshShell,Res,Text,Title; //Объявляем переменные

//Инициализируем константы для диалоговых окон

var vbOkCancel=1,vbOk=1;

//Создаем объект WshShell

WshShell = WScript.CreateObject("WScript.Shell");

Text="Пример вывода строк в диалоговое\nокно WScript";

Title="Заголовок"

//Выводим диалоговое окно на экран

Res=WshShell.Popup(Text,0,Title,vbOkCancel);

// Определяем, какая из кнопок была нажата в диалоговом окне

if (Res==vbOk) WshShell.Popup("Нажата кнопка OK");

else WshShell.Popup("Нажата кнопка Отмена");

/************* Конец *********************************************/

Листинг 2.13. Создание диалогового окна с помощью метода
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;

 ss="";

 for (i=0;i<s.length;i++) { //Цикл по всем символам в строке

if (RusDict.Exists(s.charAt(i))) //Проверяем наличие символа в словаре

//Преобразуем i-й символ в Windows-кодировку

ss+=RusDict.Item(s.charAt(i));

else ss+=s.charAt(i);

 }

 return ss;

}

Как мы видим, эта функция преобразует переданную в качестве параметра строку следующим образом: все символы кириллицы в этой строке переводятся в Windows-кодировку, остальные символы остаются без изменений. Основным в функций

DosToWin
является использование объекта
Dictionary
(аналог ассоциативного массива) с именем
RusDict
. Этот объект формируется в функции
MakeRusDict
и содержит пары "ключ"–"значение" для всех букв русского алфавита, причем в качестве ключа указывается буква в DOS-кодировке, а в качестве значения — символ с кодом, который соответствует этой букве в Windows-кодировке:

Поделиться:
Популярные книги

Моя на одну ночь

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
5.50
рейтинг книги
Моя на одну ночь

Черный Маг Императора 8

Герда Александр
8. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 8

Измена. Отбор для предателя

Лаврова Алиса
1. Отбор для предателя
Фантастика:
фэнтези
5.00
рейтинг книги
Измена. Отбор для предателя

Кодекс Крови. Книга II

Борзых М.
2. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга II

Шаг в бездну

Муравьёв Константин Николаевич
3. Перешагнуть пропасть
Фантастика:
фэнтези
космическая фантастика
7.89
рейтинг книги
Шаг в бездну

Часовая битва

Щерба Наталья Васильевна
6. Часодеи
Детские:
детская фантастика
9.38
рейтинг книги
Часовая битва

Вечная Война. Книга II

Винокуров Юрий
2. Вечная война.
Фантастика:
юмористическая фантастика
космическая фантастика
8.37
рейтинг книги
Вечная Война. Книга II

Хроники странного королевства. Вторжение. (Дилогия)

Панкеева Оксана Петровна
110. В одном томе
Фантастика:
фэнтези
9.38
рейтинг книги
Хроники странного королевства. Вторжение. (Дилогия)

Часовой ключ

Щерба Наталья Васильевна
1. Часодеи
Фантастика:
фэнтези
9.36
рейтинг книги
Часовой ключ

Инвестиго, из медика в маги

Рэд Илья
1. Инвестиго
Фантастика:
фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Инвестиго, из медика в маги

Кротовский, может, хватит?

Парсиев Дмитрий
3. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
7.50
рейтинг книги
Кротовский, может, хватит?

Драконий подарок

Суббота Светлана
1. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
7.30
рейтинг книги
Драконий подарок

Очешуеть! Я - жена дракона?!

Амеличева Елена
Фантастика:
юмористическая фантастика
5.43
рейтинг книги
Очешуеть! Я - жена дракона?!

Идеальный мир для Лекаря 9

Сапфир Олег
9. Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
6.00
рейтинг книги
Идеальный мир для Лекаря 9