Выбрать главу

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.

Конкретные примеры применения системных функций и методов объекта-оболочки Windows приведены ниже.

Вызов модулей панели управления

Напомним, что в Windows ХР модули панели управления хранятся в каталоге %SystemRoot%\System32 в нескольких файлах с расширением cpl. Эти модули можно вывести на экран с помощью утилиты Control.exe, запустив ее из командной строки или из меню Выполнить (Run) с тремя параметрами (два из них необязательны):

Control.exe File.cpl,[Name],[Page]

Здесь File.cpl — название cpl-файла; Name — имя модуля; Page — номер страницы в диалоговом окне, которая будет выведена на передний план.

Например, команда