KnigaRead.com/

Андрей Попов - Windows Script Host для Windows 2000/XP

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Андрей Попов, "Windows Script Host для Windows 2000/XP" бесплатно, без регистрации.
Перейти на страницу:

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

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

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

FSO = WScript.CreateObject("Scripting.FileSystemObject");

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

WshFldrs=WshShell.SpecialFolders;

//Определяем путь к папке выборочной автозагрузки

SHomePath=WshFldrs.item("MyDocuments");

Путь к каталогу, в который будет производиться копирование документов, формируется с помощью переменной среды %UserName%; значение такой переменной извлекается c помощью метода ExpandEnvironmentStrings() объекта WshShell:

//Определяем имя пользователя

SUserName=WshShell.ExpandEnvironmentStrings("%UserName%");

//Формируем полный путь к каталогу с резервными копиями документов

//пользователя

SBackupPath+=SUserName;

Копирование документов мы будем производить только после утвердительного ответа пользователя на соответствующий вопрос (см. рис. 11.21):

//Запрос на создание резервной копии

Res=WshShell.Popup("Выполнить резервное копирование документов вn" + SBackupPath + " ?", 0, "Выход пользователя " + SUserName, vbQuestion+vbYesNo);

Рис. 11.21. Диалоговое окно с запросом о необходимости копирования


Если пользователь согласен, мы копируем нужный каталог с помощью метода CopyFolder(), причем делаем это внутри блока try конструкции try…catch.

IsError=false;

try {

 //Производим копирование каталога

В FSO.CopyFolder(SHomePath,SBackupPath);

}

В случае возникновения ошибки переменной IsError в блоке catch присваивается значение true, а на экран выводится диалоговое окно с соответствующим сообщением (см. рис. 11.22):

catch (е) { //Обрабатываем возможные ошибки

В if (Рµ != 0) {

  //Выводим сообщение об ошибке

В В IsError=true;

  Mess="Ошибка при копировании каталога "+SHomePath+"nКод ошибки: " + е.number + "nОписание: " + е.description;

  WshShell.Popup(Mess, 0, "Выход пользователя " + SUserName, vbCritical);

В }

}

Рис. 11.22. Диалоговое окно с сообщением о возникшей ошибке


Если же в процессе копирования ошибок не возникло (переменная IsError равна false), то пользователю также выдается сообщение об этом (см. рис. 11.23):

if (!IsError) {

 //Производим копирование каталога

В FSO.CopyFolder(SHomePath, SBackupPath);В 

В //Р’СЃРµ РІ РїРѕСЂСЏРґРєРµ

 Mess = "Копирование документов произведено";

 WshShell.Popup(Mess, 0, "Выход пользователя " + SUserName, vbInformation);

}

Рис. 11.23. Диалоговое окно с сообщением о возникшей ошибке


Полностью текст сценария Logoff.js приведен в листинге 11.12.

Листинг 11.12. JScript-сценарий выхода, позволяющий производить резервное копирование документов пользователя

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

/* РРјСЏ: Logoff.jsВ В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В  */

/* Язык: JScript                                                    */

/* Описание: Сценарий выхода, позволяющий производить резервное     */

/*           копирование документов пользователя                    */

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

//Объявляем переменные

var

 WshShell,                   //Экземпляр объекта WshShell

 WshFldrs,                   //Экземпляр объекта WshSpecialFolders

 FSO,                        //Экземпляр объекта FileSystemObject

 SUserDocPath,               //Путь к папке с документами пользователя

В SUserName,В В В В В В В В В В В В В В В В В  //РРјСЏ пользователя

 SBackupPath="D:\Backup\", //Каталог для резервных копий документов

В Res,IsError;

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

var vbYesNo=4,vbQuestion=32,vbInformation=64,vbYes=6,vbOkOnly=0,

В vbCritical=16;

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

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

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

FSO = WScript.CreateObject("Scripting.FileSystemObject");

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

WshFldrs=WshShell.SpecialFolders;

//Определяем путь к папке выборочной автозагрузки

SHomePath=WshFldrs.item("MyDocuments");

//Определяем имя пользователя

SUserName=WshShell.ExpandEnvironmentStrings("%UserName%");

//Формируем полный путь к каталогу с резервными копиями документов

//пользователя

SBackupPath+=SUserName;

//Запрос на создание резервной копии

Res=WshShell.Popup("Выполнить резервное копирование документов вn"+

 SBackupPath+" ?", 0, "Выход пользователя "+SUserName, vbQuestion+vbYesNo);

if (Res==vbYes) { //Нажата кнопка Да

В IsError=false;

В try {

  //Производим копирование каталога

В  FSO.CopyFolder(SHomePath,SBackupPath);

 } catch (e) {  //Обрабатываем возможные ошибки

В  if (e != 0) {

   //Выводим сообщение об ошибке

В В  IsError=true;

   Mess="Ошибка при копировании каталога "+SHomePath+"nКод ошибки: "+

    e.number+"nОписание: "+e.description;

   WshShell.Popup(Mess,0,"Выход пользователя "+SUserName,vbCritical);

В  }

В }

В if (!IsError)В  {

В  //Р’СЃРµ РІ РїРѕСЂСЏРґРєРµ

  Mess="Копирование документов произведено";

  WshShell.Popup(Mess,0,"Выход пользователя "+SUserName,vbInformation);

В }

}

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

Вызов системных функций и стандартных диалоговых окон оболочки Windows

РР· сценариев WSH можно выводить РЅР° экран стандартные диалоговые РѕРєРЅР° Windows (например, Выполнить (Run)) Рё модули панели управления (например, Установка даты Рё времени (Date/Time)). Для этого используются системные функции Windows (API-функции) Рё объект Shell.Application, который позволяет получить доступ Рє оболочке Windows.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*