В следующем примере (листинг 1.24) создается сетевой ярлык для сайта www.microsoft.com.
Листинг 1.24. Создание сетевого ярлыка
/*****************************************************************/
/* Имя: MakeShortcut6.js */
/* Язык: JScript */
/* Описание: Создание сетевого ярлыка для www.microsoft.com */
/*****************************************************************/
var WshShell,oUrlLink;
//Создаем объект WshShell
WshShell = WScript.CreateObject("WScript.Shell");
//Создаем ярлык в текущем каталоге
oUrlLink = WshShell.CreateShortcut("Microsoft Web Site.URL");
//Устанавливаем путь к сайту
oUrlLink.TargetPath = "http://www.microsoft.com";
//Сохраняем ярлык
oUrlLink.Save();
/************* Конец *********************************************/
Объект WshUrlShortcutимеет два свойства: FullNameи TargetPath, которые полностью аналогичны одноименным свойствам рассмотренного выше объекта WshShortcut.
Также у объекта WshUrlShortcutимеется метод Save, с помощью которого ярлык сохраняется в каталоге, указанном в свойстве FullName.
Другие примеры работы с ярлыками с помощью объекта WshShortcutприведены в главе 2 (см. листинги 2.43 и 2.44).
Запуск процессов на локальной и удаленной машине
Из сценариев WSH 5.6 можно на локальной машине запускать дочерние процессы, имея при этом доступ к их стандартным входным/выходным потокам и контролируя ход выполнения этих процессов. Для этих целей предназначен объект WshScriptExec.
Кроме этого, имеется возможность запустить сценарий, файл с которым находится на локальной машине, на другой удаленной машине. Для выполнения сценариев на удаленных машинах и обработки ошибок, возникающих в таких сценариях, используются объекты WshController, WshRemoteи WshRemoteError.
В 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 |
Позволяет сценарию-родителю считывать информацию из стандартного потока ошибок запущенной дочерней задачи |
Читать дальше