Переключение между приложениями, имитация нажатий клавиш
⇐ ПредыдущаяСтр 3 из 3 Производить переключение между окнами нескольких запущенных приложений позволяет метод AppActivate объекта WshScript. В качестве аргумента этого метода нужно указывать либо заголовок активизируемого окна, либо идентификатор процесса (Process ID, PID), который запущен в данном окне. Предпочтительным является использование PID, получаемого с помощью свойства ProcessiD объекта wshScriptExec, соответствующего активизируемому приложению. Недостатки применения заголовка окна в методе AppActivate:
· при написании сценария необходимо знать точное название заголовка; · само приложение может изменить текст в заголовке окна; · в случае нескольких окон с одинаковыми заголовками AppActivate всегда будет активизировать один и тот же экземпляр, доступ к другим окнам получить не удастся.
Активизировав то или иное окно, в котором выполняется приложение Windows, можно из сценария сымитировать нажатия клавиш в этом окне. Для этого используется метод sendKeys объекта WshShell
Рассмотрим пример сценария Run&ExecWinApp.js (листинг 4.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("^с");
После этого на экран выводится сообщение о том, что Калькулятор будет закрыт:
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"); WshShel1.SendKeys(" 1 {+} 2 ="); WshShell.SendKeys("Av"); WshShell.SendKeys(" {(}c{)} Calculator");
В результате в Блокноте отображается текст, показанный на рис. 4.18.
Листинг 4.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-сценария, приведен в листинге 4.31.
Листинг 4.31. Запуск двух приложений и обмен данными между ними (VBScript) '*************************************** ' Имя: Run&ExecWinApp.vbs ' Язык: VBScript ' Описание: Запуск двух приложений и обмен данными между ними '*************************************** Option Explicit Dim WshShell, theCalculator ' Объявляем переменные ' Создаем объект WshShell Set WshShell = WScript.CreateObject("WScript.Shell") WScript.Echo("Запускаем калькулятор и"&vbCrLf&"считаем 1+2") ' Создаем объект WshScript (запускаем Калькулятор) Set theCalculator = WshShell.Exec("calc") ' Приостанавливаем выполнение сценария, для того чтобы ' окно Калькулятора успело появиться на экране WScript.Sleep 500 ' Активизируем окно Калькулятора WshShell.AppActivate theCalculator.ProcessID ' Посылаем нажатия клавиш в окно Калькулятора WshShell.SendKeys "1{+}" WshShell.SendKeys "2" WshShell.SendKeys "~" ' Клавиша <Enter> WScript.Sleep 500 ' Копируем результат вычисления в буфер 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 "l{+}2=" ' Вставляем содержимое буфера Windows (<Ctrl>+V) WshShell.SendKeys "^v" ' Выводим в окно Блокнота оставшуюся информацию WshShell.SendKeys " {(}c{)} Calculator" '************* Конец *********************************************
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|