окна:

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

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

? в случае нескольких окон с одинаковыми заголовками 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('Запускаем калькулятор и считаем 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'); //Активизируем окно Блокнота

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

WshShell.SendKeys('1{+}2=');

//Вставляем содержимое буфера Windows (<Ctrl>+V)

WshShell.SendKeys('^v');

//Выводим в окно Блокнота оставшуюся информацию

WshShell.SendKeys(' {(}c{)} Calculator');

/*************  Конец *********************************************/

Тот же пример, реализованный в виде VBScript-сценария, приведен в листинге 2.31.

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

'*******************************************************************

' Имя: Run&ExecWinApp.vbs

' Язык: VBScript

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

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату