ПРИМЕЧАНИЕ
Получить значение переменной можно также с помощью подобного вызова: MsgBox wshshell.ExpandEnvironmentStrings("%systemroot%").
set wshshell = WScript.CreateObject("WScript.Shell")
MsgBox wshshell.Environment.Count
MsgBox wshshell.Environment.item("winbootdir")
wshshell.Environment.Remove("winbootdir")
MsgBox wshshell.Environment.Count
Exec (путь и название исполняемого файла)
Метод предназначен для выполнения команд и при своем вызове возвращает объект, с помощью которого можно управлять вызванной программой. Данный объект поддерживает следующие методы.
ПРИМЕЧАНИЕ
Выполнить команду можно также с помощью метода Run. Он имеет следующий синтаксис: «переменная» = wshshell.run("путь к программе", TRUE).
■ Terminate — завершить вызванную программу.
■ ExitCode — код, возвращаемый при открытии программы. Если значение этого кода равно 0, то программа была вызвана успешно. Для этих целей можно также воспользоваться методом Status.
■ ProcessID — возвращает идентификатор, присвоенный нашей вызванной программе.
Рассмотрим простой пример работы с данным методом. В этом примере вызывается Проводник, после чего отображается PID созданного нами процесса, а затем процесс завершится.
set wshshell = WScript.CreateObject("WScript.Shell")
set prog = wshshell.Exec("explorer.exe")
if prog.Status = 0 then
MsgBox prog.ProcessID
prog.Terminate
End if
SendKeys
Работа этого метода довольно интересна. Он возвращает произвольное значение после завершения работы сценария. Например, если запустить в командном процессоре (cmd.exe) сценарий, содержащий строку wshshell.SendKeys "This message return over by script", то после завершения работы сценария в командном процессоре (то есть в строке для ввода команд командного процессора) появится указанное сообщение.
SpecialFolders
Метод предназначен для работы с пользовательскими папками. Он также поддерживает следующие методы.
■ Count — возвращает общее количество пользовательских папок.
■ Length — аналогичен предыдущему методу.
■ Item (индекс) — возвращает путь к папке, определенной данным индексом. Индекс может принимать значения от 0 до общего числа папок (возвращаемое методом Count значение).
Рассмотрим пример, отображающий пути ко всем возможным пользовательским папкам.
set wshshell = WScript.CreateObject("WScript.Shell")
For i = 0 to wshshell.SpecialFolders.Count – 1
MsgBox wshshell.SpecialFolders.Item(i)
Next
Как обычно, были рассмотрены далеко не все объекты и методы, которые доступны в Windows XP. Например, был пропущен такой интересный и знаменитый объект (знаменитый потому, что в свое время именно он использовался в почтовом черве ILOVEYOU), как объект для доступа к почтовым функциям программы Outlook Express. Объект поддерживает очень много методов, не говоря уже о других объектах Windows XP, поэтому их описание могло вылиться в отдельную книгу. В любом случае, автор рассчитывал создать лишь введение в возможности сервера сценариев Windows. Если эта тема вам интересна, рекомендуется купить отдельную книгу, посвященную только ей.
Глава 17
Другие возможности
Теперь кратко рассмотрим несколько возможностей настройки интерфейса оболочки Windows XP или ее конфигурации без использования реестра, команд rundll32 и всего того, что мы с вами уже рассмотрели.
Вкладка Общие диалога Свойства системы
Существует возможность редактирования содержимого вкладки Общие диалога Свойства системы даже без доступа к реестру Windows XP. Плюсом этого метода является больше возможностей, которые с его помощью можно выполнить.
Итак, для редактирования содержимого вкладки Общие необходимо создать в каталоге %systemroot%\system32 два файла — oemINFo.ini и Oemlogo.bmp. Второй файл просто является картинкой, которая будет добавлена на вкладку Общие, а пример содержимого файла oemINFo.ini рассмотрим в листинге 17.1.
[Support Information]
Line1 = "На правах рекламы:"
Line2="Здесь могла бы быть ваша реклама…"