Содержание

COM & OLE

Сценарий Pascal может получить доступ к методам и свойствам COM (также известным как OLE или ActiveX) через поддержку объектов автоматизации COM. Это позволяет получить доступ, например, к стандартным COM-серверам Windows, настраиваемым COM-серверам, библиотекам DLL Visual Basic ActiveX и сборкам .NET через COM-взаимодействие.

COM-объекты освобождаются автоматически, когда они выходят за пределы области видимости. Нет никаких функций, чтобы «уничтожить» или «освободить» их.

COM на основе IDispatch

Есть две функции для инициализации объектов автоматизации COM на основе IDispatch: CreateOleObject и GetActiveOleObject.

Используйте CreateOleObject, чтобы создать новый COM-объект с указанным именем класса. Эта функция возвращает переменную типа Variant в случае успеха и вызывает исключение в противном случае.

Используйте GetActiveOleObject для подключения к существующему COM-объекту с указанным именем класса. Эта функция возвращает переменную типа Variant в случае успеха и вызывает исключение в противном случае. В случае некоторых программ это можно использовать для определения, запущена программа или нет.

Значение, возвращаемое CreateOleObject или GetActiveOleObject, затем можно использовать для доступа к свойствам и методам COM-объекта. Доступ осуществляется посредством «позднего связывания», что означает, что не проверяется, существуют ли методы или свойства, к которым вы пытаетесь получить доступ, до тех пор, пока программе не потребуется во время выполнения.

Чтобы получить доступ к свойству или методу, имя которого является зарезервированным словом, используйте IDispatchInvoke.

COM на основе IUnknown

Если интерфейс IDispatch не реализован объектом, можно использовать поддержку COM на основе IUnknown.

Для инициализации объектов автоматизации COM на основе IUnknown используйте CreateComObject.

Значение, возвращаемое CreateComObject, может затем использоваться для доступа к методам COM-объекта после его приведения к желаемому интерфейсу. Доступ осуществляется через «раннее связывание», что означает, что желаемый интерфейс должен быть определен в сценарии, в отличие от поддержки COM на основе IDispatch.

StringToGUID можно использовать для преобразования строкового представления GUID в «настоящий» GUID. Используйте OleCheck, чтобы проверить возвращаемые значения любого вызываемого вами метода.

Если вы копируете определение интерфейса из любого существующего исходного кода Delphi, удалите скобки вокруг строки GUID интерфейса. Также удалите все соглашения о вызовах, предполагается «stdcall». Если интерфейс содержит какие-либо функции, которые вы не будете вызывать, вы можете заменить их на фиктивные, чтобы избежать необходимости определять какие-либо используемые ими специальные типы.

Процедуры и функции