Выбрать главу

  <named name="L" helpstring="Просмотр содержимого книжки" type="simple" required="false"/>

  <named name="F" helpstring="Поиск по фамилии" type="simple" required="false"/>

  <named name="A" helpstring="Добавление записи" type="simple" required="false"/>

  <named name="D" helpstring="Удаление записи" type="simple" required="false"/>

 </runtime>

 <script language="JScript">

  var WshShell;

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

  if ((WScript.Arguments.Named.Exists("L")) ||

   (WScript.Arguments.Named.Exists("l"))) {

   WshShell.Run("wscript PhoneBook.wsf //Job:SortName");

   WScript.Quit();

  }

  if ((WScript.Arguments.Named.Exists("F")) ||

   (WScript.Arguments.Named.Exists("f"))) {

   WshShell.Run("wscript PhoneBook.wsf //Job:FindName");

   WScript.Quit();

  }

  if ((WScript.Arguments.Named.Exists("A")) ||

   (WScript.Arguments.Named.Exists("a"))) {

   WshShell.Run("wscript PhoneBook.wsf //Job:AddRec");

   WScript.Quit();

  }

  if ((WScript.Arguments.Named.Exists("D")) ||

   (WScript.Arguments.Named.Exists("d"))) {

   WshShell.Run("wscript PhoneBook.wsf //Job:DelRec");

   WScript.Quit();

  }

  //Ни один из нужных аргументов не был указан, выводим

  //описание параметров

  WScript.Arguments.ShowUsage();

 </script>

</job>

Теперь, если понадобится ввести дополнительную функцию при работе с записной книжкой (например, поиск по номеру телефона), нужно будет в файл PhoneBook.wsf добавить задание с новым идентификатором, а в файл ArgMenu.wsf — обработку нового параметра командной строки.

Организация диалога с помощью кнопочного меню

Вторым вариантом организации диалога, который мы рассмотрим, является кнопочное (командное) меню. Принцип его работы в нашем примере остается практически тем же, что и при описанной выше обработке аргументов командной строки — пользователь должен в диалоговом окне ввести символ, соответствующий одной из описанных в этом окне команд (рис. 7.2). Этот символ анализируется в сценарии, и в зависимости от его значения вызывается то или иное задание из файла PhoneBook.wsf.

Рис. 7.2. Кнопочное меню для работы с записной книжкой

Диалоговое окно, показанное на рис. 7.2, выводится в цикле while, в котором с помощью оператора switch анализируется введенный пользователем символ. Выход из цикла совершается, если введенный символ совпадает с "q" или "Q".

Текст сценария ComMenu.wsf, реализующего кнопочное меню для работы с записной книжкой, приводится в листинге 7.5.

Листинг 7.5. Командное меню для работы с записной книжкой

<job id="ComMenu">

<script language="VBScript" src="WSHInputBox.vbs"/>

<script language="JScript">

 var WshShell,SMenu,Res;

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

 SMenu="[L] - Просмотр содержимого книжки\n";

 SMenu+="[F] - Поиск по фамилии\n";

 SMenu+="[A] - Добавление записи\n";

 SMenu+="[D] - Удаление записи\n";

 SMenu+="[Q] - Выход из сценария\n";

 SMenu+="\n\nКоманда:";

 Res="";

 while ((Res!="q") && (Res!="Q")) {

  Res=WSHInputBox(SMenu,"Записная книжка");

  switch (Res) {

  case "L": {

   WshShell.Run("wscript PhoneBook.wsf //Job:SortName",1,true);

   break;

  }

  case "l": {

   WshShell.Run("wscript PhoneBook.wsf //Job:SortName",1,true);

   break;

  }

  case "F": {

   WshShell.Run("wscript PhoneBook.wsf //Job:FindName",1,true);

   break;

  }

  case "f": {

   WshShell.Run("wscript PhoneBook.wsf //Job:FindName",1,true);

   break;

  }

  case "A": {

   WshShell.Run("wscript PhoneBook.wsf //Job:AddRec",1,true);

   break;

  }

  case "a": {

   WshShell.Run("wscript PhoneBook.wsf //Job:AddRec",1,true);

   break;

  }

  case "D": {

   WshShell.Run("wscript PhoneBook.wsf //Job:DelRec",1,true);

   break;

  }

  case "d": {

   WshShell.Run("wscript PhoneBook.wsf //Job:DelRec",1,true);

   break;

  }

 }

}

</script>

</job>

Однозадачный сценарий для работы с записной книжкой

Как мы видим из вышеприведенных примеров, ни объектная модель WSH, ни языки JScript и VBScript не предоставляют средств для создания полноценного графического интерфейса пользователя.

Тем не менее, такой интерфейс в сценариях WSH создать можно. Мы продемонстрируем это на примере еще одного сценария (состоящего из однозадачного JScript-файла) для работы с записной книжкой, в котором для диалога с пользователем будет организована пользовательская форма с несколькими кнопками и текстовыми полями ввода. Для создания этой формы и работы с ней будут использоваться HTML-файл и браузер Internet Explorer.