Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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




Производить переключение между окнами нескольких запущенных приложений позволяет метод 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...