Лабораторная работа №7 Работа с внутренними и внешними модулями Цель: Овладеть навыками работы сервером сценариев Windows , изучить возможности сервера сценариев для работы с внутренними и внешними исполняемыми модулями. 1. Вызов модулей панели управления Как нам уже известно, запуск приложений из сценариев может осуществляться с помощью метода Run WScript.Shell. Кроме того, из сценариев WSH можно выводить на экран стандартные диалоговые окна Windows (например, Выполнить (Run)) и модули панели управления (например, Установка даты и времени (Date/Time)). Для этого используют системные функции Windows (API-функции) и объект shell.Application который позволяет получить доступ к оболочке Windows. Для дальнейшей работы с приложениями применяются методы AppActivate и SendKeys объекта WScript.Shell. В Windows модули панели управления хранятся в каталоге %SystemRoot%\System32 в нескольких файлах с расширением cpl. Все модули можно вывести на экран с помощью утилиты Control.exe, запустив ее из командной строки или из меню Выполнить (Run) с тремя параметрам (два из них необязательны): Control.exe File.cpl,[Name], [Page] Здесь File.cpl — название cpl-файла; Name— имя модуля; Page— номер страницы в диалоговом окне, которая будет выведена на передний план. Например, команда Control.exe Main.cpl,@0 вызовет диалоговое окно для настройки мыши. Если же выполнить команду Control.exe Main.cpl,@1 то на экран будет выведено диалоговое окно для настройки клавиатуры. Описание модулей панели управления для Windows XP приведено таблице 1. (в других версиях операционной системы количество имен страниц может быть другим). Таблица 1. Модули панели управления в Windows XP Модуль панели Имя Индекс Описание управления appwiz.cpl — 0...3 Установка и удаление программ desk.cpl — 0...4 Свойства экрана hdwwiz.cpl — — Мастер установки оборудования inetcpl.cpl — 0...6 Параметры браузера Internet Explorer intl.cpl — 0...2 Языки и региональные стандарты joy.cpl — — Установленные игровые устройства main.cpl mmsys.cpl ncpa.cpl nusrmgr.cpl @0, @1 — — — 0...4 0...4 — — Параметры мыши и клавиатуры Свойства аудиоустройств Сетевые подключения Учетные записи пользователей odbccp32.cpl — — Администратор источников данных ODBB powercfg.cpl sysdm.cpl telephon.cpl timedate.cpl access.cpl — @0, @1 —— — — 0...6 — 0…1 0...5 Настройки управления электропитанием Свойства системы Телефонные подключения Установка даты и времени Настройка специальных возможностей AccessSetup.cpl — — Установка пользователя по умолчанию Из сценариев WSH модули панели управления можно вызывать несколькими способами, два из которых мы рассмотрим ниже. 1.1. Запуск с помощью оболочки Windows Для доступа к стандартным диалоговым окнам Windows и модулям панели управления нужно сначала создать экземпляр объекта-оболочки Windows: Set Shell=WScript.CreateObject("Shell.Application") Модули панели управления вызываются с помощью метода ControlPanelItem(), в качестве параметра которого указывается имя соответствующего cpl-файла, например: Shell.ControlPanelItem("Appwiz.cpl") С помощью метод Explore () можно запустить Проводник Windows и открыть в нем определенную в качестве параметра папку, например: Shell.Explore(“C:\”) Окно запуска программ открывается с помощью метода FileRun( ) .объекта shell.Application. Из сценария WSH можно также вызвать диалоговое окно, в котором производится выбор действия при завершении работы Windows с помощью метод ShutdownWindows(). 1.2. Запуск с помощью системных функций Windows Другим вариантом запуска модулей панели управления является использование специальных функций, находящихся в библиотечном файле shell. Хотя из сценариев нельзя напрямую вызывать системные функции Win32, для этой цели можно воспользоваться стандартной утилитой RunDll32 которая позволяет запускать функции, хранящиеся в библиотечных файлах. В свою очередь RunD1132.exe запускается в сценарии с помощью метода Run объекта wshshell. В качестве параметров программы RunD1132.exe нужно через запятую указать имя dll-файла и имя вызываемой функции, например: ‘Выводим окно установки Windows WshShell.Run("Rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2") Здесь мы вызываем функцию control_RunDLL() из файла shell32.dll. В качестве же параметров функции control_RunDLL указываются через запятую название нужного cplфайла, имя и индекс страницы модуля, которая выведена на передний план (в вышеприведенной команде вызывается страница с индексом 2 ("Установка Windows") из модуля appwiz.cpl ("Установка и удаление программ")). Диалоговое окно, позволяющее форматировать диск с заданными параметрами, вызывается с помощью системной функции SHFormatDrive () из библиотечного файла shell32.dll. WshShell.Run("Rundll32.exe shell32.dll, SHFormatDrive") Заблокировать рабочую станцию Windows ХР можно с помощью вызова функции Lockworkstation (.) из библиотечного файла user32.dll. WshShell.Run("Rundll32.exe user32.dll,LockWorkStation") 1.3. Метод AppActivate Метод AppActivate активизирует уже запущенное указанное приложение (устанавливает на него фокус), но не производит никаких действий по изменению размеров его окна. Для того чтобы определить, какое именно приложение необходимо активизировать, строка title сравнивается по очереди с названиями окон всех запущенных приложений. Если не найдено ни одного точного совпадения, будет производиться поиск того приложения, название окна которого начинается со строки title. Если и в этом случае не будет найдено ни одного подходящего приложения, то будет вестись поиск приложения, заголовок которого заканчивается на эту строку. Если будет найдено несколько подходящих окон, то произойдет активизация одного из них (окно выбирается произвольно). Set Wsh = WScript.CreateObject("WScript.Shell") Wsh.Run "Calc.exe",1 'Пауза. WScript.Sleep 800 Wsh.AppActivate "Calculator " 1.4. Метод SendKeys Каждая клавиша задается одним или несколькими символами. Например, для того чтобы задать нажатие друг за другом букв А, Б и В, нужно указать в качестве параметра для SendKeys строку "АБВ": string="AБB". Несколько символов имеют в методе SendKeys специальное значение: +, л, %, ~, (,). Для того чтобы задать один из этих символов, их нужно заключить в фигурные скобки ({}). Например, для задания знака плюс используется { + }. Квадратные скобки ([]) хотя и не имеют в методе SendKeys специального смысла, их также нужно заключать в фигурные скобки. Кроме этого, для задания самих фигурных скобок следует использовать следующие конструкции: {{} (левая скобка) и {}} (правая скобка). Для задания неотображаемых символов, таких как <Enter> или <Таb>, и специальных клавиш в методе SendKeys используются коды, представленные в таблице 2. Клавиша Код Клавиша Код <Backspace> {BACKSPACE}, (BKSP} <Стрелка вниз> {DOWN} <Break> {BREAK} <Стрелка вправо> {RIGHT} <Caps Lock> {CAPSLOCK} <F1> (Fl) <Del> или <Delete> {DELETE} <F2> {F2} <End> {END} <F3> {F3} <Enter> {ENTER} <F4> {F4} <Esc> {ESC} <F5> {F5} <Help> {HELP} <F6> {F6} <Home> {HOME} <F7> {F7} <Ins> или <Insert> {INSERT} <F8> {F8} <Num Lock> {NUMLOCK} <F9> {F9} <Page Down> {PGDN} <F10> {F10} <Page Up> {PGUP} <F11> {F11} <Print Screen> {PRTSC} <F12> {F12} <Scroll Lock> (SCROLLLOCK) <F13> {F13} <Tab> {TAB} <F14> {F14} <Стрелка вверх> {UP} <F15> {F15} <Стрелка влево> {LEFT} <F16> {F16} {BS} ИЛИ ИЛИ ИЛИ ИЛИ {DEL} ~ {INS} Для задания комбинаций клавиш с <Shift>, <Ctrl> или <Alt> перед соответствующей клавишей нужно поставить один или несколько кодов табл.3 Клавиша Код <Shift> + <Ctrl> ^ <Alt> % Для того чтобы задать комбинацию клавиш, которую нужно набирать, удерживая нажатыми клавиши <Shift>, <Ctrl> или <Alt>, необходимо заключить коды этих клавиш в скобки. Например, если требуется сымитировать нажатие клавиш <G> и <S> при нажатой клавише <Shift>, следует использовать последовательность +(GS). Для того же, чтобы задать одновременное нажатие клавиш <Shift> и <G>, а затем <S> (уже без <Shift>), используется +GS. В методе SendKeys можно задать несколько нажатий подряд одной и той же клавиши. Для этого необходимо в фигурных скобках указать код нужной клавиши, а через пробел — число нажатий. Например, {LEFT 42} означает нажатие клавиши <Стрелка влево> 42 раза подряд; {h 10} означает нажатие клавиши <h> 10 раз подряд. Метод SendKeys не может быть использован для посылки нажатия клавиш приложений, которые не были разработаны специально для запуска в Windows (например, для приложений MS-DOS). Метод SendKeys не может быть использован для имитации нажатия клавиши PrintScreen. 2. Задания для выполнения Создать файл сценариев, который выполняет следующие операции и организует обработку исключительных ситуаций: 1. Запустить модуль панели управления (см. таблицу). Сделать копию экрана для каждой страницы окна модуля в документ WORD и вставить поясняющий текст (можно на английском языке). Сохранить файл. Закрыть все окна. Представить текст скрипта и полученный файл. № варианта 1 2 3 4 5 6 Модуль панели управления Свойства системы Параметры браузера Internet Explorer Языки и региональные стандарты Свойства экрана Параметры мыши и клавиатуры Свойства аудиоустройств