Объект WshScriptExec

Объект WshScriptExec создается методом Exec() объекта WshShell.

Метод WshShell.Exec выполняет командную строку, указанную в качестве его параметра, и возвращает объект WScriptExec, свойства и методы которого предоставляют информацию о запущенной задаче и обеспечивают доступ к ее стандартным потокам ввода/вывода и ошибок (обработка этих потоков необходима в силу того, что непосредственно на экране строки, выводимые дочерним приложением, не появляются).

С помощью метода WshShell.Exec можно запускать и графические оконные Windows-приложения. В этом случае создаваемый объект WshScriptExec полезен тем, что он позволяет получить идентификатор запущенного процесса (Process ID, PID), который затем можно использовать для активизации задачи при помощи метода WshShell.AppActivate.

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

// Создание объекта  WshScriptExec

var WshShell = WScript.CreateObject("WScript.Shell")
var WshExec = WshShell.Exec ( command )

Свойства и метод объекта WshScriptExec

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

ExitCode

Синтаксис

// Свойство. Только чтение.

WshExec.ExitCode

Возвращаемое значение

Код выхода, устанавливаемый дочерней задачей при завершении выполнения.

Пример

var WshShell = WScript.CreateObject("WScript.Shell")
//  запуск "xcopy" с заведомо ошибочными параметрами
var WshExec = WshShell.Exec("xcopy abc123")
// пауза для запуска приложения
WScript.Sleep (2000);
// чтение кода выхода
WScript.Echo ( WshExec.ExitCode );

ProcessID

Синтаксис

// Свойство. Только чтение.

WshExec.ProcessID

Возвращаемое значение

Идентификатор запущенного процесса (PID).

Пример

var WshShell = WScript.CreateObject("WScript.Shell")
var WshExec = WshShell.Exec("notepad");
WScript.Sleep (2000);
WshShell.AppActivate (WshExec.ProcessID);
WshShell.SendKeys ("0123456789");

Status

Синтаксис

// Свойство. Только чтение.

WshExec.Status

Возвращаемое значение

Состояние запущенного процесса. Возможные значения:

Пример

var WshShell = WScript.CreateObject("WScript.Shell")
var WshExec = WshShell.Exec("notepad");
WScript.Sleep (2000);
WScript.Echo ( "status - " + WshExec.Status );
WshExec.Terminate();
WScript.Sleep (2000);
WScript.Echo ( "status - " + WshExec.Status );

StdOut

Синтаксис

// Свойство. Только чтение.

WshExec.StdOut

Возвращаемое значение

Объект TextStream, соответствующий стандартному выходному потоку запущенной задачи.

Пример

var WshShell = WScript.CreateObject("WScript.Shell")
var WshExec = WshShell.Exec("nslookup");
var InStream = WshExec.StdIn;
InStream.WriteLine ("help");
InStream.WriteLine ("exit");
var OutStream = WshExec.StdOut;
var s = '';
while (!OutStream.AtEndOfStream)
    s += OutStream.ReadLine() + '\n';
WScript.Echo ( s );

StdIn

Синтаксис

// Свойство. Только чтение.

WshExec.StdIn

Возвращаемое значение

Объект TextStream, соответствующий стандартному входному потоку запущенной задачи.

Пример

var WshShell = WScript.CreateObject("WScript.Shell")
var WshExec = WshShell.Exec("nslookup");
var InStream = WshExec.StdIn;
InStream.WriteLine ("help");
InStream.WriteLine ("exit");
var OutStream = WshExec.StdOut;
var s = '';
while (!OutStream.AtEndOfStream)
    s += OutStream.ReadLine() + '\n';
WScript.Echo ( s );

StdErr

Синтаксис

// Свойство. Только чтение.

WshExec.StdErr

Возвращаемое значение

Объект TextStream, соответствующий стандартному потоку ошибок запущенной задачи.

Пример

var WshShell = WScript.CreateObject("WScript.Shell");
var WshExec = WshShell.Exec("nslookup");
var InStream = WshExec.StdIn;
InStream.WriteLine ("abc123");
InStream.WriteLine ("exit");
var OutStream = WshExec.StdErr;
var s='';
while (! OutStream.AtEndOfStream)
    s += OutStream.ReadLine() + '\n';
WScript.Echo ( s );

Terminate()

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

Синтаксис

WshExec.Terminate ()

Параметры

Нет

Пример

var WshShell = WScript.CreateObject("WScript.Shell")
var WshExec = WshShell.Exec("notepad");
WScript.Sleep (2000);
WScript.Echo ( "status - " + WshExec.Status );
WshExec.Terminate();
WScript.Sleep (2000);
WScript.Echo ( "status - " + WshExec.Status );