Windows Script Host для Windows 2000/XP
Шрифт:
Кроме этого, имеется возможность запустить сценарий, файл с которым находится на локальной машине, на другой удаленной машине. Для выполнения сценариев на удаленных машинах и обработки ошибок, возникающих в таких сценариях, используются объекты
WshController
, WshRemote
и WshRemoteError
. Объект WshScriptExec
В WSH 5.6 появилась возможность при помощи метода
WshShell.Exec
запускать консольное приложение или сценарий как дочерний процесс выполняемого сценария, т.е. с теми же переменными
WshShell.Exec
выполняет командную строку, указанную в качестве его параметра, и возвращает объект WScriptExec
, свойства и методы которого предоставляют информацию о запущенной задаче и обеспечивают доступ к ее стандартным потокам ввода/вывода и ошибок (обработка этих потоков необходима в силу того, что непосредственно на экране строки, выводимые дочерним приложением, не появляются). Отметим также, что с помощью метода
WshShell.Exec
можно запускать и графические оконные Windows-приложения. В этом случае создаваемый объект WshScriptExec
полезен тем, что он позволяет получить идентификатор запущенного процесса (Process ID, PID), который затем можно использовать для активизации задачи при помощи метода WshShell.AppActivate
. Объект
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
В следующем
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("Команда еще выполняется");
}
Поделиться:
Популярные книги
Светлейший князь
4. Император и трубочист
Фантастика:
героическая фантастика
альтернативная история
5.00
рейтинг книги
Хозяин Теней 3
3. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Сфирот
8. Стеллар
Фантастика:
боевая фантастика
рпг
6.92
рейтинг книги
Юнлинг
Фантастика:
героическая фантастика
космическая фантастика
попаданцы
8.35
рейтинг книги
Я все еще князь. Книга XXI
21. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Бояръ-Аниме. Газлайтер. Том 33
33. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Развод, который ты запомнишь
1. Развод
Любовные романы:
остросюжетные любовные романы
короткие любовные романы
5.00
рейтинг книги
Кодекс Охотника. Книга IV
4. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Личный аптекарь императора. Том 6
6. Личный аптекарь императора
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Двойник короля 15
15. Двойник Короля
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Черный Маг Императора 7 (CИ)
7. Черный маг императора
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Наномашины, внучок! Том 2
2. Чего смотришь? Иди книгу читай
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Печать Пожирателя
4. Пожиратель
Фантастика:
аниме
сказочная фантастика
фэнтези
попаданцы
5.00
рейтинг книги
Запечатанный во тьме. Том 1. Тысячи лет кача
1. Хроники Арнея
Фантастика:
уся
эпическая фантастика
фэнтези
5.00