Объект WshScriptExec
Объект 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 Позволяет сценарию-родителю считывать информацию из стандартного потока ошибок запущенной дочерней задачи