Переключение между приложениями, имитация нажатий клавиш

Производить переключение между окнами нескольких запущенных приложений позволяет метод AppActivate объекта WshScript. В качестве аргумента этого метода нужно указывать либо заголовок активизируемого окна, либо идентификатор процесса (Process ID, PID), который запущен в данном окне. Предпочтительным является использование PID, получаемого с помощью свойства ProcessID объекта WshScriptExec, соответствующего активизируемому приложению. Недостатки применения заголовка окна в методе AppActivate:

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

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

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

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

Рассмотрим пример сценария Run&ExecWinApp.vbs (листинг 7.2), в котором запускается Калькулятор (calc.exe) и в его окно с помощью SendKeysпоследовательно посылаются нажатия клавиш <1>, <+>, <2> и <Enter>:

Set theCalculator = WshShell.Exec("calc")

WScript.Sleep 500

WshShell.AppActivate theCalculator.ProcessID

WshShell.SendKeys "1{+}"

WshShell.SendKeys "2"

WshShell.SendKeys "~" ' Клавиша <Enter>

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

WshShell.SendKeys "^c"

После этого на экран выводится сообщение о том, что Калькулятор будет закрыт, в результате чего окно Калькулятора теряет фокус. Для того чтобы вновь активизировать это окно, используется метод 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 "1{+}2="

WshShell.SendKeys "^v"

WshShell.SendKeys " {(}c{)} Calculator"

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

' Имя: 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 "1{+}2="

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

WshShell.SendKeys "^v"

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

WshShell.SendKeys " {(}c{)} Calculator"

'************* Конец *********************************************

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

 

<== предыдущая лекция | следующая лекция ==>
Запуск приложений Windows | Запуск независимых консольных приложений и команд Windows


Дата добавления: 2018-03-01; просмотров: 95; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию, введите в поисковое поле ключевые слова и изучайте нужную вам информацию.

Поделитесь с друзьями:

Если вам понравился данный ресурс вы можете рассказать о нем друзьям. Сделать это можно через соц. кнопки выше.
helpiks.org - Хелпикс.Орг - 2014-2018 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 2.853 сек.