What is activexobject in javascript

Javascript

Основные дополнения к языку JavaScript, сделанные корпорацией Microsoft, связаны с использованием управляющих элементов ActiveX. Эти элементы представляют собой динамические библиотеки, созданные в соответствии со стандартом COM. COM (Component Object Model) — это стандарт создания программных компонентов, рассмотрение которого выходит за рамки нашего справочника. Для наших целей вполне достаточно воспринимать элементы ActiveX как черный ящик, выполняющий определенные действия по запросу вызвавшей его программы. Появление элементов ActiveX было порождено стремлением Microsoft создать технологию, которая могла бы успешно конкурировать с подключаемыми модулями обозревателей Netscape. Следует признать, что задача была решена исключительно удачно, т. к. в результате появился стандарт разработки платформо-зависимых программных компонентов, реализующих платформо-независимые протоколы и архитектуры. Все элементы ActiveX при установке в системе Windows регистрируются в ее регистре. При этом в качестве уникального ключа используется GUID данного элемента, т. е. его уникальный 64-разрядный шестнадцатеричный номер. Для доступа к элементу ActiveX по его GUID в HTML-документе используется элемент OBJECT, например:

Отображение элемента Календарь

Этот фрагмент HTML-документа содержит управляющий элемент ActiveX «Календарь» и будет отображаться обозревателем примерно так: Исполняющая система JScript дает нам более гибкие возможности запуска элементов ActiveX, которые описаны ниже.

Объект ActiveXObject

Объект ActiveXObject используется для запуска объектов ActiveX. Он создается конструктором

Здесь сервер — имя COM-сервера, класс — имя класса создаваемого объекта, адрес — необязательное имя сетевого сервера, на котором должен быть создан заданный объект (может быть доменным именем или IP-адресом). Создание объекта на удаленном сервере действующими версиями JScirpt пока не поддерживается, т. е. аргумент адрес при вызове данного конструктора игнорируется. После создания объекта ActiveX (т. е. после запуска соответствующей программы) мы можем обращаться к его методам и свойствам, используя стандартный синтаксис языка JavaScript. Встроенных свойств и методов этот объект не имеет. Пример: если на компьютере-клиенте установлен Microsoft Word 7.0, то следующий сценарий его запустит, откроет документ Mydoc.doc, сохранит этот документ в текстовом формате и завершит работу MS Word.

var word = new ActiveXObject("Word.Application"); // запускает MS Word word.Documents.Open("Mydoc.doc"); // открывает документ word.ActiveDocument.SaveAs("Mydoc.txt", 4); // 4 = текстовый формат DOS word.Quit(); // завершает работу MS Word
  1. Следует помнить, что после запуска объекта ActiveX он остается активным до закрытия окна обозревателя, из которого он был вызван. JScript не содержит стандартного средства для завершения работы этого объекта. Если мы хотим, чтобы объект прекратил работу ранее завершения работы нашего сценария, то должны вызвать соответствующий метод данного объекта (в приведенном примере это метод Quit).
  2. Любопытно, что операция typeof возвращает для свойств и методов объектов ActiveX нестандартное значение «unknown» (видимо из-за того, что все объекты ActiveX являются наследниками COM-интерфейса IUnknown).
Читайте также:  Class java util logging logger

Функция GetObject

Функция GetObject возвращает ссылку на COM-объект, содержащийся в заданном файле. Она имеет вид

Здесь имя_файла — спецификация файла, сервер — имя COM-сервера, класс — имя класса объектов. Если имя_файла опущено, то задание второго аргумента обязательно, в противном случае оно может быть опущено. При вызове этой функции запускается приложение, ассоциированное с заданной спецификацией файла (перечень таких ассоциаций хранится в системном регистре Windows). Если имя_файла — это пустая строка «», то создается новый экземпляр объекта заданного типа. Если имя_файла опущено, то возвращается ссылка на объект данного типа, который активен в данный момент. Если такого объекта нет, то генерируется ошибка. Некоторые приложения позволяют нам активировать часть файла. Для этого следует добавить восклицательный знак (!) к имени файла и после него задать строку, указывающую на ту часть файла, которую мы хотим активировать. О том, как задавать эту строку, см. документацию к программе, с помощью которой создан данный файл. Так, например, программа автоматизации проектирования может хранить в файле чертежей несколько слоев. Для активации второго слоя в файле чертежа с именем MyCad.cad мы можем использовать строку

var layerObj = GetObject("MyCad.cad!Layer2");

Если мы не укажем класс объекта, то приложение, активирующее данный файл, определяется из системного регистра. Однако, некоторые файлы могут поддерживать несколько типов объектов. В этом случае следует явно указывать второй аргумент данной функции, например:

var myObj = GetObject("SAMPLE.DRW", "FIGMENT.DRAWING");

В этом примере FIGMENT — имя программы, а DRAWING — один из классов объектов, которые она поддерживает. После активации объекта мы можем обращаться к его методам и свойствам, используя стандартный синтаксис языка JavaScript. Встроенных свойств и методов этот объект не имеет. Функцией GetObject следует пользоваться в тех случаях, когда приложение, создающее экземпляры объектов данного класса, уже активно или когда мы хотим не только запустить приложение, но и загрузить в него файл, содержащий нужный нам объект. В остальных случаях используйте объект ActiveXObject. Если объект зарегистрирован как существующий в единственном экземпляре (например Word.Basic в Microsoft Word 7.0), то GetObject всегда возвращает ссылку на этот единственный экземпляр объекта, будучи вызвана с пустой строкой в качестве имени файла, и генерирует ошибку, если имя_файла опущено. Примечание. Приведенное описание функции GetObject и примеры ее использования позаимствованы из документации Microsoft. Дело в том, что автор не смог найти ни одного разумного применения этой функции в клиентской среде. Более того, по сообщению разработчиков, в обозревателях Interent Explorer ее применение запрещено «в целях безопасности»

Рубрики

Источник

Читайте также:  Using this in php classes

Справочник по JScript : Объекты JScript : Объект ActiveXObject

Активирует и возвращает ссылку на объект Automation.

Синтаксис

newObj = new ActiveXObject(servername.typename[, location])

Аргументы

newObj Обязательный аргумент. Имя переменной, которой присвоен объект ActiveXObject. servername Обязательный аргумент. Название приложения, предоставляющего объект. typename Обязательный аргумент. Тип или класс создаваемого объекта. location Необязательный аргумент. Название сетевого сервера, на котором создается объект.

Описание

Автоматические серверы могут предоставлять хотя бы один тип объекта. Например, приложения для электронной обработки текста предоставляют следующие объекты: application (объект приложения), document (объект документа), toolbar (объект панели инструментов).

Чтобы создать новый объект Automation, присвойте новый ActiveXObject объектной переменной:

var ExcelApp = new ActiveXObject("Excel.Application"); var ExcelSheet = new ActiveXObject("Excel.Sheet");

Этот код запускает приложение, создающее объект (в данном случае, Microsoft Excel). Когда объект создан, вы обращаетесь к нему в коде, используя объявленную ранее объектную переменную. В следующем примере вы обращаетесь к свойствам и методам нового объекта, используя объектную переменную ExcelSheet и другие объекты Excel, включая объект Application и коллекцию ActiveSheet.Cells.

// Сделаем Excel видимым через объект Application. ExcelSheet.Application.Visible = true; // Поместим некоторый текст в первую ячейку листа. ExcelSheet.ActiveSheet.Cells(1,1).Value = "Это столбец A, строка 1"; // Сохраним лист ExcelSheet.SaveAs("C:\\TEST.XLS"); // Закроем Excel через метод Quit объекта Application. ExcelSheet.Application.Quit();

Вы можете создать объект на удаленном компьютере в сети, передав название компьютера через аргумент servername’ объекта ActiveXObject. Это тоже самое имя, что и название удаленной машины в пути для общих папок. Например, для общих сетевых ресурсов «\\newserver\docs», servername — это «newserver». Также servername может быть задан, используя формат DNS (Domain Name System) и IP-адрес.

C помощью следующего кода мы получим номер версии программы Excel, запущенной на удаленном компьютере с названием «newserver»:

Если компьютер с таким названием недоступен или не найден, то возникает ошибка.

Поддержка

Смотрите также

Источник

ActiveXObject

Warning: This object is a Microsoft extension and is supported in Internet Explorer only, not in Windows 8.x Store apps.

The ActiveXObject Object enables and returns a reference to an automation object.

This object is used only to instantiate automation objects, and has no members.

Syntax

let newObj = new ActiveXObject(servername.typename[, location]) 

Parameters

servername The name of the application providing the object. typename The type or class of the object to create. location Optional The name of the network server where the object is to be created.

Читайте также:  Простая проверка html кода

Remarks

Automation servers provide at least one type of object. For example, a word-processing application may provide an application object, a document object, and a toolbar object.

You may be able to identify servername.typename values on a host PC in the HKEY_CLASSES_ROOT registry key. For example, here are a few examples of values you may find there, depending on which programs are installed:

  • Excel.Application
  • Excel.Chart
  • Scripting.FileSystemObject
  • WScript.Shell
  • Word.Document

Important: ActiveX objects may present security issues. To use the ActiveXObject , you may need to adjust security settings in Internet Explorer for the relevant security zone. For example, for the local intranet zone, you typically need to change a custom setting to «Initialize and script ActiveX controls not marked as safe for scripting.»

To identify members of an automation object that you can use in your code, you may need to use a COM object browser, such as the OLE/COM Object Viewer, if no reference documentation is available for the Automation object.

To create an Automation object, assign the new ActiveXObject to an object variable:

var ExcelApp = new ActiveXObject("Excel.Application"); var ExcelSheet = new ActiveXObject("Excel.Sheet");

This code starts the application creating the object (in this case, a Microsoft Excel worksheet). Once an object is created, you refer to it in code using the object variable you defined. In the following example, you access properties and methods of the new object using the object variable ExcelSheet and other Excel objects, including the application object and the ActiveSheet.Cells collection.

// Make Excel visible through the Application object. ExcelSheet.Application.Visible = true; // Place some text in the first cell of the sheet. ExcelSheet.ActiveSheet.Cells(1,1).Value = "This is column A, row 1"; // Save the sheet. ExcelSheet.SaveAs("C:\\TEST.XLS"); // Close Excel with the Quit method on the Application object. ExcelSheet.Application.Quit();

Requirements

Supported in the following document modes: Quirks, Internet Explorer 6 standards, Internet Explorer 7 standards, Internet Explorer 8 standards, Internet Explorer 9 standards, Internet Explorer 10 standards, Internet Explorer 11 standards. Not supported in Windows 8.x Store apps.

Note: Creating an ActiveXObject on a remote server is not supported in Internet Explorer 9 standards mode, Internet Explorer 10 standards mode, Internet Explorer 11 standards mode, and Windows Store apps or later.

See also

Источник

Оцените статью