Чтение онлайн

на главную - закладки

Жанры

Windows Script Host для Windows 2000/XP

Попов Андрей Викторович

Шрифт:

при написании сценария необходимо знать точное название заголовка;

само приложение может изменить текст в заголовке окна;

 в случае нескольких окон с одинаковыми заголовками

AppActivate
всегда будет активизировать один и тот же экземпляр, доступ к другим окнам получить не удастся.

Активизировав то или иное окно, в котором выполняется приложение Windows, можно из сценария сымитировать нажатия клавиш в этом окне. Для этого используется метод

SendKeys
объекта
WshShell
(подробное описание этого метода приведено в главе 1).

Замечание

Для нормальной работы метода

SendKeys
необходимо, чтобы языком по умолчанию в операционной системе был назначен английский язык.

Рассмотрим пример сценария Run&ExecWinApp.js (листинг 2.30), в котором запускается Калькулятор (calc.exe), и в его окно с помощью

SendKeys
последовательно посылаются нажатия клавиш <1>, <+>, <2> и <Enter>:

theCalculator = WshShell.Exec("calc");

WScript.Sleep(1000);

WshShell.AppActivate(theCalculator.ProcessID);

WshShell.SendKeys("1{+}");

WshShell.SendKeys("2");

WshShell.SendKeys("~"); //Клавиша <Enter>

Затем выполнение сценария приостанавливается на 1 секунду, чтобы результат вычислений был виден на экране:

WScript.Sleep(1000);

после чего результат вычислений (символ "3") копируется в буфер с помощью "нажатия" клавиш <Ctrl>+<C>:

WshShell.SendKeys ("^c");

После этого на экран выводится сообщение о том, что Калькулятор будет закрыт:

WScript.Echo("Закрываем калькулятор");

в результате чего окно Калькулятора теряет фокус. Для того чтобы вновь активизировать это окно, используется метод AppActivate, параметром которого служит PID Калькулятора:

WshShell.AppActivate(theCalculator.ProcessID);

Для того чтобы закрыть окно Калькулятора, в него посылаются нажатия клавиш <Alt>+<F4>:

WshShell.SendKeys("%{F4}");

После закрытия Калькулятора запускается Блокнот (notepad.exe) и в него записываются результаты работы Калькулятора (вставка из буфера вычисленной суммы производится с помощью нажатий <Ctrl>+<V>):

WshShell.Run("notepad");

WScript.Sleep(1000);

WshShell.AppActivate("notepad");

WshShell.SendKeys("l{+}2=");

WshShell.SendKeys("^v");

WshShell.SendKeys(" {(}с{)} Calculator");

В результате в Блокноте отображается текст, показанный на рис. 2.12.

Рис. 2.12. Результат работы сценария Run&ExecWinApp.js

Листинг 2.30. Запуск двух приложений и обмен данными между ними (JScript)

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

/* Имя: Run&ExecWinApp.js */

/* Язык: JScript */

/* Описание: Запуск двух приложений и обмен данными между ними */

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

var WshShell, theCalculator; //Объявляем переменные

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

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

WScript.Echo("Запускаем калькулятор и\n считаем 1+2");

//Создаем объект WshScript (запускаем Калькулятор)

theCalculator = WshShell.Exec("calc");

//Приостанавливаем выполнение сценария, для того, чтобы

//окно Калькулятора успело появиться на экране

WScript.Sleep(1000);

//Активизируем окно Калькулятора

WshShell.AppActivate(theCalculator.ProcessID);

//Посылаем нажатия клавиш в окно Калькулятора

WshShell.SendKeys("1{+}");

WshShell.SendKeys("2");

WshShell.SendKeys("~"); //Клавиша <Enter>

WScript.Sleep(1000);

//Копируем результат вычисления в буфер Windows (<Ctrl>+C)

WshShell.SendKeys("^c");

//Выводим сообщение (активное окно меняется)

WScript.Echo("Закрываем калькулятор");

//Активизируем окно Калькулятора

WshShell.AppActivate(theCalculator.ProcessID);

//Закрываем окно Калькулятора (<Alt>+<F4>)

WshShell.SendKeys("%{F4}");

WScript.Echo("Запускаем Блокнот и копируем туда результат");

WshShell.Run("notepad"); //Запускаем Блокнот

//Приостанавливаем выполнение сценария, для того, чтобы

//окно Блокнота успело появиться на экране

WScript.Sleep(1000);

WshShell.AppActivate("notepad"); //Активизируем окно Блокнота

//Посылаем нажатия клавиш в окно Блокнота

Поделиться:
Популярные книги

Кодекс Охотника. Книга XXVI

Винокуров Юрий
26. Кодекс Охотника
Фантастика:
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXVI

Хозяин Теней 2

Петров Максим Николаевич
2. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 2

Зодчий. Книга III

Погуляй Юрий Александрович
3. Зодчий Империи
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Зодчий. Книга III

Газлайтер. Том 20

Володин Григорий Григорьевич
20. История Телепата
Фантастика:
боевая фантастика
аниме
попаданцы
5.00
рейтинг книги
Газлайтер. Том 20

Я до сих пор не царь. Книга XXVII

Дрейк Сириус
27. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я до сих пор не царь. Книга XXVII

Хозяин Теней 5

Петров Максим Николаевич
5. Безбожник
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Хозяин Теней 5

Воплощение Похоти

Некрасов Игорь
1. Воплощение Похоти
Фантастика:
юмористическое фэнтези
попаданцы
рпг
аниме
5.00
рейтинг книги
Воплощение Похоти

Вернувшийся: Новая жизнь. Том I

Vector
1. Вернувшийся
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Вернувшийся: Новая жизнь. Том I

Вперед в прошлое 7

Ратманов Денис
7. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 7

За Горизонтом

Вайс Александр
8. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
За Горизонтом

Бастард Императора. Том 5

Орлов Андрей Юрьевич
5. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 5

Телохранитель Генсека. Том 1

Алмазный Петр
1. Медведев
Фантастика:
попаданцы
альтернативная история
7.00
рейтинг книги
Телохранитель Генсека. Том 1

Прорыв

Круз Андрей
3. Эпоха мертвых
Фантастика:
боевая фантастика
9.33
рейтинг книги
Прорыв

Запечатанный во тьме. Том 1. Тысячи лет кача

NikL
1. Хроники Арнея
Фантастика:
уся
эпическая фантастика
фэнтези
5.00
рейтинг книги
Запечатанный во тьме. Том 1. Тысячи лет кача