KnigaRead.com/

Андрей Попов - Windows Script Host для Windows 2000/XP

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Андрей Попов, "Windows Script Host для Windows 2000/XP" бесплатно, без регистрации.
Перейти на страницу:

Text="Блокнот запущен (Status=" & theNotepad.Status & ")" & vbCrLf _

 & "Закрыть Блокнот?"

Title=""

' Выводим диалоговое окно на экран

Res=WshShell.Popup(Text,0,Title,vbQuestion+vbYesNo)

' Определяем, какая кнопка нажата в диалоговом окне

If Res=vbYes Then

 theNotepad.Terminate ' Прерываем работу Блокнота

 ' Приостанавливаем выполнение сценария для того, чтобы Блокнот

 ' успел закрыться

В WScript.Sleep 100

 WScript.Echo "Блокнот закрыт (Status=" & theNotepad.Status & ")"

End If

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

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

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

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

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

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*