Андрей Попов - Windows Script Host для Windows 2000/XP
- Название:Windows Script Host для Windows 2000/XP
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2004
- Город:Санкт-Петербург
- ISBN:5-94157-197-6
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Андрей Попов - Windows Script Host для Windows 2000/XP краткое содержание
В книге описывается сервер сценариев Windows Script Host (WSH) версии 5.6, который является одним из стандартных компонентов Windows ХР, а также может быть установлен в более ранних версиях Windows. Приводятся сценарии на языках VBScript и JScript, иллюстрирующие применение стандартных объектов WSH 5.6, включая создание из сценариев дочерних процессов и запуск сценариев на удаленных компьютерах. В качестве более сложных примеров рассматриваются сценарии, работающие с базами данных, управляющие приложениями Microsoft Office, организующие графический пользовательский интерфейс, использующие технологии ADSI (Active Directory Service Interface) и WMI (Windows Management Instrumentation) для решения задач администрирования. Освещены вопросы практической работы с XML-файлами и создания СОМ-объектов. Особое внимание уделяется вопросам безопасности при работе со сценариями, приводятся конкретные примеры настроек политик безопасности. К книге прилагается дискета с исходными текстами большинства примеров.
Windows Script Host для Windows 2000/XP - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
PersonRec.Phone=GetTagVal(CurrNode,"Phone");
PersonRec.Street=GetTagVal(CurrNode,"Street");
PersonRec.House=GetTagVal(CurrNode,"House");
PersonRec.App=GetTagVal(CurrNode,"App");
PersonRec.Note=GetTagVal(CurrNode,"Note");
//Сохраняем объект PersonRec в массиве PersonArr
this.PersonArr[this.PersonArr.length]=PersonRec;
}
}
//Запись данных из формы в XML-файл
function ListPersons_SaveData() {
var Root,CurrNode,ElemList;
//Сохраняем в переменной Root ссылку на корневой элемент
//документа
Root=XML.documentElement;
//Сохраняем в переменной CurrNode ссылку на (CurRecord+1)-й
//элемент Person
CurrNode=Root.childNodes.item(this.CurRecord+1);
//Записываем данные из полей ввода формы в соответствующие
//XML-элементы, которые являются дочерними узлами
//относительно CurrNode
SetTagVal(CurrNode,"LastName",doc.all.txtLastName.value);
SetTagVal(CurrNode,"Name",doc.all.txtName.value);
SetTagVal(CurrNode,"Phone",doc.all.txtPhone.value);
SetTagVal(CurrNode,"Street",doc.all.txtStreet.value);
SetTagVal(CurrNode,"House",doc.all.txtHouse.value);
SetTagVal(CurrNode,"App",doc.all.txtApp.value);
SetTagVal(CurrNode,"Note",doc.all.txtNote.value);
//Сохраняем XML-файл на диске
XML.save(PathBook);
}
//Загрузка данных для текущей записи в форму
function ListPersons_LoadDialog() {
//Вызываем метод LoadDialog для объекта Person,
//который является CurRecord-м элементом массива PersonArr
this.PersonArr[this.CurRecord].LoadDialog();
}
//Обновление данных в форме
function ListPersons_RefreshDialog(IsGoTop) {
//Обнуляем массив PersonArr
this.PersonArr.length=0;
//Заново загружаем данные из XML-файла в массив PersonArr
this.FileToArray();
if (IsGoTop)
//Переходим к первой записи в массиве
this.FirstRecord()
else
//Переходим к последней записи в массиве
this.FinalRecord();
//Загружаем в форму данные для текущей записи
this.LoadDialog();
}
//Переход к следующей записи
function ListPersons_NextRecord() {
if (this.CurRecord
//Если текущая запись не является последней, увеличиваем
//номер текущей записи
this.CurRecord++;
}
//Переход к предыдущей записи
function ListPersons_PreviousRecord() {
if (this.CurRecord > 0)
//Если текущая запись не является первой, уменьшаем
//номер текущей записи
this.CurRecord--;
}
//Переход к первой записи
function ListPersons_FirstRecord() {
this.CurRecord = 0;
}
//Переход к последней записи
function ListPersons_FinalRecord() {
this.CurRecord = this.PersonArr.length - 1;
}
//Добавление новой записи
function ListPersons_NewRecord() {
var Root,NewElem;
//Сохраняем в переменной Root ссылку на корневой элемент
//документа
Root=XML.documentElement;
//Создаем новый элемент Person
NewElem=XML.createElement("Person");
//Добавляем новый элемент в XML-файл
Root.appendChild(NewElem);
//Сохраняем XML-файл на диске
XML.save(PathBook);
//Обновлем в форме данные для последней добавленной записи
this.RefreshDialog(false);
}
//Удаление текущей записи
function ListPersons_DelRecord() {
var Root,DelNom;
//Сохраняем в переменной Root ссылку на корневой элемент
//документа
Root=XML.documentElement;
//В переменной DelNom сохраняем номер удаляемого элемента Person
DelNom=this.CurRecord+1;
//Удаляем DelNom-й элемент Person из XML-файла
Root.removeChild(Root.childNodes.item(DelNom))
//Сохраняем XML-файл на диске
XML.save(PathBook);
//Выводим сообщение о том, что запись удалена
WshShell.Popup("Запись N "+DelNom+" удалена",0,"Информация",
vbInformation+vbOkOnly);
//Обновлем в форме данные для первой записи
this.RefreshDialog(true);
}
Вывод формы из сценария WSH
Для того чтобы вывести из сценария WSH разработанную HTML-форму на экран, нужно вначале получить ссылку на объект Application
, который определяется в объектной модели Internet Explorer. Делается это следующим образом:
var ie = WScript.CreateObject("InternetExplorer.Application", "ie_");
При этом в память загружается новый экземпляр Internet Explorer, а ссылка на этот объект присваивается переменной ie
(само окно браузера по умолчанию невидимо, для его отображения на экране необходимо установить свойство Visible
объекта Application
в 1). В качестве второго параметра метода CreateObject
указан префикс " ie
_", посредством которого мы сможем написать функции-обработчики событий Internet Explorer.
Внешний вид браузера Internet Explorer настраивается с помощью нескольких свойств объекта Application
:
//Устанавливаем свойства объекта ie для отображения формы
ie.AddressBar = false; //Адресная строка не выводится
ie.Fullscreen = false; //Полноэкранный режим запрещен
ie.MenuBar = false; //Главное меню браузера не выводится
ie.Resizable = false; //Изменять размеры окна нельзя
ie.StatusBar = false; //Строка статуса не выводится
ie.ToolBar = false; //Инструментальная панель не выводится
//Устанавливаем размеры окна
ie.Height = 300; //Высота
ie.Width = 780; //Длина
Для того чтобы загрузить в браузер нужный нам файл Phone.htm с описанием формы, используется метод Navigate объекта Application:
ie.Navigate(PathHTML);
В качестве параметра метода Navigate
указывается путь к файлу Phone.htm, который заранее устанавливается в функции InitPath()
:
function InitPath() {
BasePath=WshShell.CurrentDirectory+"\\";
//Путь к файлу с данными
PathBook=BasePath+"book.xml";
//Путь к файлу с HTML-формой
PathHTML=BasePath+"Phone.htm";
}
Далее следует учесть, что сценарий WSH и окно браузера, в котором загружена форма, — это два независимых процесса. Поэтому в сценарии после загрузки формы в окно браузера необходимо дождаться, пока пользователь не закроет это окно. Для этого мы присвоим глобальной переменной IsQuit
значение false
и заставим сценарий выполняться до тех пор, пока значение этой переменной не станет равным true
:
while (!IsQuit)
//Приостанавливаем сценарий на 0,1 сек
WScript.Sleep(100);
При закрытии формы будет генерироваться событие OnQuit
объекта Application
, поэтому мы напишем функцию-обработчик ie_OnQuit()
этого события, в которой будем устанавливать isQuit
в true
и сохранять в XML- файле данные, которые были изменены в форме (листинг 7.9).
function ie_OnQuit() {
IsQuit=true;
//Сохраняем данные из формы в XML-файле
objListPersons.SaveData();
}
В нашем сценарии загрузка в браузер HTML-файла с формой будет производиться в основной запускной функции Main()
(листинг 7.10).
function Main() {
Интервал:
Закладка: