'************* Конец *********************************************/
Переключение между приложениями, имитация нажатий клавиш
Производить переключение между окнами нескольких запущенных приложений позволяет метод
AppActivate
объекта
WshScript
. В качестве аргумента этого метода нужно указывать либо заголовок активизируемого окна, либо программный идентификатор (PID) процесса, который запущен в этом окне. Предпочтительным является использование PID, который можно получить с помощью свойства
ProcessID
объекта
WshScriptExec
, соответствующего активизируемому приложению. Недостатки применения в методе
AppActivate
заголовка окна:
при написании сценария необходимо знать точное название заголовка;
само приложение может изменить текст в заголовке окна;
в случае нескольких окон с одинаковыми заголовками
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>: