Отправляет email-рассылки с помощью сервиса Sendsay

Программирование на JavaScript

  Все выпуски  

Азы и секреты программирования на JavaScript.


Служба Рассылок Subscribe.Ru проекта Citycat.Ru
Азы и секреты программирования на JavaScript Выпуск 5.

Работа с объектом Shell.

     Во время установки Сервера Сценариев Windows в системный каталог копируется и регистрируется в системе как объект Shell ActivX-файл WSHom.Ocx. С его помощью мы получаем самые мощные средства для использования в своих сценариях.

Методы объекта Shell
Method Описание
CreateShortcut Доступ к ярлыкам как к объекту WshShortcut
ExpandEnvironmentStrings Получение строки переменных окружения
Popup Создание полноценных диалоговых окон
RegDelete Удаление из системного реестра ключа или его значения
RegRead Получение ключей системного реестра
RegWrite Запись ключей и значений в системный реестр
Run Запуск ЛЮБОЙ программы как из режима командной строки

Свойства
Свойство Описание
Environment Возвращает коллекцию объектов WshEnvironment
SpecialFolders Обеспечивает доступ к специальным папкам Windows, таким как Рабочий Стол, меню Пуск, Мои документы используя объект WshSpecialFolders

WshShell.Environment
Свойство Environment возвращает объект WshEnvironment.
Синтакс
WshShell.Environment ( [strType]) = objWshEnvironment
Замечания
Строковая переменная strType определяет, где находятся переменные окружения. Возможные значения: "System," "User," "Volatile" и "Process." Это работает в основном только в Windows NT-2000. Для Windows 95-98 поддерживается только значение "Process".

Сценарий может получить значения следующих переменных окружения:
Имя Описание
NUMBER_OF_PROCESSORS Число процессоров для многопроцессорных систем
PROCESSOR_ARCHITECTURE Тип процессора рабочей станции пользователя
PROCESSOR_IDENTIFIER ID процессора рабочей станции пользователя
PROCESSOR_LEVEL Уровень процессора рабочей станции пользователя
PROCESSOR_REVISION Версия процессора рабочей станции пользователя
OS Операционная система рабочей станции пользователя
COMSPEC Исполняемый файл интерпритатора командной строки DOS (обычно cmd.exe)
HOMEDRIVE Главный состемный диск (обычно диск C)
HOMEPATH Каталог пользователя по умолчанию (в Windows NT обычно \users\default)
PATH Переменная окружения PATH
PATHEXT Расширения для исполняемых файлов (обычно .com, exe, .bat, или .cmd)
PROMPT Вид приглашения командной строки (обычно $P$G)
SYSTEMDRIVE Локальный диск, где находится системный каталог (обычно c:\)
SYSTEMROOT Системный каталог (обычно c:\winnt). Тот-же результат дает WINDIR
WINDIR Системный каталог (обычно c:\winnt). Тот-же результат дает SYSTEMROOT
TEMP Каталог временных файлов (c:\temp). User, Volatile
TMP Каталог временных файлов (c:\temp). User, Volatile

Пример использования
// Возвращает значение числа процессоров в системе.
// Указанное число хранится в системных переменных окружения Windows'NT-2000,
// поэтому данный пример не будет работать в W'95-98
//
var WshShell = WScript.CreateObject("WScript.Shell");
var WshSysEnv = WshShell.Environment("SYSTEM");
WScript.Echo(WshSysEnv("NUMBER_OF_PROCESSORS"));

WshShell.SpecialFolders
Свойство SpecialFolders обеспечивает доступ к специальным папкам Windows, таким как Рабочий_Стол, меню Пуск, Мои_Документы используя объект WshSpecialFolders.
Синтакс
WshShell.SpecialFolders = objWshSpecialFolders
Пример использования
// Фрагмент кода показывает, как проверить путь к папке Рабочий Стол
var WshShell = WScript.CreateObject("WScript.Shell");
WScript.Echo("Ваш Рабочий стол расположен в каталоге: "
 + WshShell.SpecialFolders("Desktop"));

WshShell.CreateShortcut
Метод CreateShortcut управляет объектом Ярлык (WshShortcut). Если заголовок ярлыка оканчивается на ".URL," создается объект WshURLShortcut.
Синтакс
WshShell.CreateShortcut(strPathname) = objShortcut
Пример использования
// Создание ярлыка на Блокнот на рабочем столе
//
var WSHShell = WScript.CreateObject("WScript.Shell");
// Получение доступа к рабочему столу
// используя объект WshSpecialFolders
var DesktopPath = WSHShell.SpecialFolders("Desktop");
// Создание ярлыка на рабочем столе
var MyShortcut = WSHShell.CreateShortcut(DesktopPath
    + "\\На Блокнот.lnk");
// Установка и запись свойств ярлыка
MyShortcut.TargetPath = WSHShell.ExpandEnvironmentStrings(
 "%windir%\\notepad.exe");
// Получение пути к каталогу Windows
MyShortcut.WorkingDirectory =
 WSHShell.ExpandEnvironmentStrings("%windir%");
MyShortcut.Windowstyle="4;"
MyShortcut.IconLocation =
 WSHShell.ExpandEnvironmentStrings("%windir%\\notepad.exe, 0");
MyShortcut.Save();
WScript.Echo("Ярлык на Блокнот создан на рабочем столе.");
WScript.Quit(0);

Замечания
Обратите внимание на то, что разделитель каталогов «\» в тексте сценария обозначается не одной косой чертой (каталог\каталог), а двумя подряд (\\). Это связано с тем, что по правилам синтаксиса языка одна косая черта (прямой слэш) используется для ввода специальных символов. Таких как, например, конец строки и перевод каретки (\n\r). Поэтому прямой слэш тоже пришлось вводить как спец.символ.

WshShell.ExpandEnvironmentStrings
Метод ExpandEnvironmentStrings расшифровывает переменные окружения "PROCESS" для строкового параметра strString и возвращает результат как строку. Переменные необходимо с двух сторон ограничить символами "%".
Синтакс
WshShell.ExpandEnvironmentStrings(strString) = strExpandedString
Пример использования
Рассмотрен в предыдущем примере.

Создание диалоговых окон

WshShell.Popup
С помощью этого метода Вы можете создавать полноценные диалоговые окна как, при использовании интерфейса Win32.
Синтакс
IntPressed = WshShell.Popup(Message_Text, Time, Title_Text, Mode)
Где Message_Text – текст сообщения; Time – интервал времени в секундах, через который окно будет автоматически закрыто; Title_Text – текст в заголовке окна; Mode – режим окна, целое число, состоящее из суммы значений типов набора выводимых кнопок и используемой стандартной иконки. Эти значения приведены ниже.
Типы кнопок
Код Набор кнопок
0 [OK]
1 [OK] и [Cancel]
2 [Abort], [Retry] и [Ignore]
3 [Yes], [No] и [Cancel]
4 [Yes] и [No]
5 [Retry] и [Cancel]
Типы иконок
Значение Иконка
16 "Stop Mark"
32 "Question Mark"
48 "Exclamation Mark"
64 "Information Mark"
Этот метод возвращает целочисленное значение в зависимости от того, какую из кнопок щелкнули. Если ни на одну из кнопок не нажали, и окно закрылось по тайм-ауту, возвращается значение -1.
Возвращаемые значения
значение кнопка
1 [OK]
2 [Cancel]
3 [Abort]
4 [Retry]
5 [Ignore]
6 [Yes]
7 [No]

Пример использования
// Вывод диалогового окна с двумя кнопками и иконкой
// «восклицательный знак», которое будет закрыто
// по истечении 5 секунд.
//
var WSHShell = WScript.CreateObject("WScript.Shell");
intDoIt =  WSHShell.Popup("Текст в окне", 5, "Текст заголовка", 65);
WScript.Quit(0);

Методы работы с системным реестром.
По моему мнению, исчерпывающюю информацию по работе с системным реестром можно получить из файла примера, расположеноого в каталоге C:\WINDOWS\SAMPLES\WSH\REGISTRY.JS. Для пользователей не-W''98 привожу его с небольшими сокращениями:

//Методы работы с реестром
//
var WSHShell = WScript.CreateObject("WScript.Shell");
//Создает ключ HKCU\\MyRegKey со значением 'Ключ верхнего уровня'
WSHShell.RegWrite("HKCU\\MyRegKey\\", "Ключ верхнего уровня");
//Создает ключ HKCU\\MyRegKey\\Entry со значением 'Ключ второго уровня'
WSHShell.RegWrite("HKCU\\MyRegKey\\Entry\\", "Ключ второго уровня");
//Задает значение HKCU\\MyRegKey\\Value равным REG_SZ 1
WSHShell.RegWrite("HKCU\\MyRegKey\\Value", 1);
// Задает значение HKCU\\MyRegKey\\Entry равным REG_DWORD 2
WSHShell.RegWrite("HKCU\\MyRegKey\\Entry", 2, "REG_DWORD");
//Задает значение HKCU\\MyRegKey\\Entry\\Value1 равным REG_BINARY 3
WSHShell.RegWrite("HKCU\\MyRegKey\\Entry\\Value1", 3, "REG_BINARY");
// Удаляет значение HKCU\\MyRegKey\\Entry\\Value1
WSHShell.RegDelete("HKCU\\MyRegKey\\Entry\\Value1");
//Удаляет ключ HKCU\\MyRegKey\\Entry
WSHShell.RegDelete("HKCU\\MyRegKey\\Entry\\");
//Удаляет ключ HKCU\\MyRegKey
WSHShell.RegDelete("HKCU\\MyRegKey\\");

Замечания
1. Вы можете пользоваться следующими сокращениями:
Возвращаемые значения
Сокращение Полное название
HKCU HKEY_CURRENT_USER
HKLM HKEY_LOCAL_MACHINE
HKCR HKEY_CLASSES_ROOT
HKEY_USERS
HKEY_CURRENT_CONFIG

2. К сожалению, в методах управления реестром есть серьезный недостаток - RegWrite поддерживает только четыре типа данных: REG_SZ, REG_EXPAND_SZ, REG_DWORD и REG_BINARY. В остальных случаях возвращается ошибка.

Запуск программ - WshShell.Run

Синтакс
WshShell.Run (strCommand, [intWindowStype], [bWaitOnReturn])
Параметры
StrCommand – строковое значение, указывающее путь к исполняемому файлу, и его параметры для командной строки. IntWindowStype – целая переменная, указывающая вид окна, в котором будет запущена программа (обычное, свернутое в значек, или во весь экран). bWaitOnReturn – логическая переменная, указывающая, продолжить выполнение сценария сразу после запуска программы, или дождаться ее завершения. Если параметр bWaitOnReturn опущен, или установлен в FALSE, метод возвращает код завершения программы или 0 (zero).


Уважаемый подписчик!

    Я получаю от Вас письма с вопросами о том, когда мы начнем рассматривать использование технологий JavaScript в сети Интернет. По этому поводу мне хочется внести ясность. Вам может показаться, что работа со сценариями в локальных системах менее важна по сравнению с изучением вопросов функционирования JScript в Вэб. Поверьте мне - это ошибочное мнение. На примере локальных систем мы рассматриваем принципиальные основы работы со сценариями. Применение сценариев в вэб-навигаторах очень обширная и интересная тема, но все-таки, это частный случай с жесткими ограничениями. Здесь нельзя запускать приложения, получать доступ к файловой системе локальной машины и т.д. Если мы не рассмотрим эти вопросы, то упустим много важного.

    Тем не менее, эта подписка предназначена для Вас, и Вы можете выбрать путь ее дальнейшего развития. Я предлагаю проголосовать. Система голосования очень проста. Щелчек мышкой на выбранном Вами варианте автоматически вызовет установленную у Вас почтовую программу и сформирует короткое письмо с заданным заранее заголовком. Адрес и тема будут подставлены автоматически. Их менять не надо - по полю темы будет произведена сортировка Ваших голосов. Вы можете сразу отправить письмо по адресу, а можете добавить к нему свои комментарии.

      Вариант 1:   Выберите этот вариант, если Вы считаете, что стоит продолжить подробное рассмотрение вопросов использования JavaScript в локальных системах. К вопросу об использовании JavaScript в сети Интернет мы перейдем после того, как первая тема будет исчерпана.

      Вариант 2:   Выбирайте этот вариант, если Вы считаете, что стоит скорее перейти к вопросу об использовании JavaScript в сети Интернет. Задерживаться на подробном рассмотрении общих принципов работы сценариев не имеет смысла.



Автор и ведущий рассылки Игорь Балезин
Возможно-ли зарабатывать в Интернет?


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться Рейтингуется SpyLog

В избранное