Kniga-Online.club

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

Читать бесплатно Андрей Попов - Windows Script Host для Windows 2000/XP. Жанр: Программное обеспечение издательство -, год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

Объект WScriptExec имеет единственный метод Terminate, с помощью которого можно прервать выполнение дочернего процесса.

Например:

var WshShell=WScript.CreateObject("WScript.Shell");

var ChildJob = WshShell.Exec("cscript ChildScript.js");

ChildJob.Terminate();

Метод Terminate пытается закрыть приложение, посылая ему сообщение WM_CLOSE. Если это не срабатывает, задача завершается принудительно. Методом Terminate нужно пользоваться только в крайнем случае, т.к. некоторые приложения, завершенные таким способом, не полностью освобождают ресурсы. Поэтому, как правило, лучше дождаться, когда запущенная задача сама закончит свою работу.

Свойства объекта WshScriptExec описаны в табл. 1.18.

Таблица 1.18. Свойства объекта WshScriptExec

Свойство Описание ExitCode Содержит код выхода, устанавливаемый дочерней задачей при завершении выполнения ProcessID Содержит идентификатор процесса (ProcessID, PID), которому соответствует объект WshScriptExec Status Содержит информацию о ходе выполнения дочерней задачи StdOut Позволяет сценарию-родителю считывать информацию из стандартного выходного потока запущенной дочерней задачи StdIn Позволяет сценарию-родителю записывать информацию в стандартный входной поток запущенной дочерней задачи StdErr Позволяет сценарию-родителю считывать информацию из стандартного потока ошибок запущенной дочерней задачи 

Свойство ProcessID

В следующем примере (сценарий MakeCalc.js) свойство ProcessID используется для активизации стандартного калькулятора Windows. Напомним, что для этой цели также можно при вызове метода WshShell.AppActivate использовать название окна "Calculator".

Листинг 1.25. Активизация приложений с помощью PID

/*****************************************************************/

/* РРјСЏ: MakeCalc.jsВ В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В  */

/* Язык: JScript                                                 */

/* Описание: Активизация приложений с помощью PID                */

/*****************************************************************/

var WshShell, theCalculator;

//Создаем объект WshShell

WshShell = WScript.CreateObject("WScript.Shell");

//Запускаем калькулятор

theCalculator = WshShell.Exec("calc");

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

//калькулятора появилось на экране

WScript.Sleep(500);

//Активизируем окно калькулятора

WshShell.AppActivate(theCalculator.ProcessID);

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

WshShell.SendKeys("1{+}");

WScript.Sleep(500);

WshShell.SendKeys("2");

WScript.Sleep(500);

WshShell.SendKeys("~");

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

Свойство Status

После запуска дочернего процесса сценарий-родитель продолжает выполняться асинхронно, поэтому необходимо уметь определять, выполняется ли еще запущенная задача, или она уже завершена. Для этой цели используется свойство Status: если значение Status равно 0, то это означает, что дочерний процесс находится в стадии выполнения, если Status равно 1, то запущенная задача уже завершена. Например, в результате выполнения приведенного в листинге 1.26 сценария ChildStatus.js на экран выведется несколько строк "Команда еще выполняется" (рис. 1.12).

Листинг 1.26. Контроль состояния дочернего процесса

/*****************************************************************/

/* РРјСЏ: ChildStatus.jsВ В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В  */

/* Язык: JScript                                                 */

/* Описание: Контроль состояния дочернего процесса               */

/*****************************************************************/

var WshShell,theJob;

//Создаем объект WshShell

WshShell=WScript.CreateObject("WScript.Shell");

//Запускаем дочернее приложение

theJob = WshShell.Exec("xcopy /?");

for (;;) {

 if (theJob.status==1) //Проверяем завершение дочернего процесса

  break;  //Выходим из цикла

 else WScript.Echo("Команда еще выполняется");

}

WScript.Echo("Выполнение завершено");

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

Рис. 1.12. Результат выполнения сценария ChildStatus.js 

Свойства StdOut, StdIn и StdErr

Работать c потоками StdOut, StdIn и StdErr объекта WshScriptExec можно с помощью тех же методов, которые применяются в объекте WScript для доступа к соответствующим стандартным потокам (см. табл. 1.3). Например, запустив приведенный в листинге 1.27 сценарий ConToWin.js с помощью wscript.exe, мы выведем в графическое окно информацию о ключах программы cscript.exe (рис. 1.13).

Рис. 1.13. Результат выполнения сценария ConToWin.js

Отметим, что запускаемое консольное приложение cscript.exe выводит символы кириллицы в DOS-кодировке, поэтому для вывода таких символов в графическое окно их нужно преобразовать в Windows-кодировку. В рассматриваемом сценарии это делается с помощью функции DosToWin, которая преобразует переданную в качестве параметра строку следующим образом: все символы кириллицы в этой строке переводятся в Windows-кодировку, остальные символы остаются без изменений:

Перейти на страницу:

Андрей Попов читать все книги автора по порядку

Андрей Попов - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


Windows Script Host для Windows 2000/XP отзывы

Отзывы читателей о книге Windows Script Host для Windows 2000/XP, автор: Андрей Попов. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


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