International PHP Conference Berlin 2025

com_get_active_object

(PHP 5, PHP 7, PHP 8)

com_get_active_objectВернуть дескриптор на уже запущенный экземпляр объекта COM

Описание

com_get_active_object(string $prog_id, ?int $codepage = null): variant

com_get_active_object() - это то же самое, что и создание нового экземпляра объекта com, за исключением того, что объект будет возвращён, если он уже запущен. Приложения OLE используют так называемую "Таблицу Запущенных Объектов" для возможности запускать приложения единожды. Эта функция представляет обёртку над библиотечной COM-функцией GetActiveObject().

Список параметров

prog_id

prog_id должен быть или ProgID или CLSID объекта, к которому вы хотите получить доступ (к примеру, Word.Application).

codepage

Делает то же самое, что и в классе com.

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

Если запрошенный объект запущен, то он будет возвращён вашему скрипту как любой другой объект COM.

Ошибки

Есть множество причин, по которым эта функция может завершиться с ошибкой. Наиболее распространённая причина в том, что объект не запущен. В таком случае будет выброшено исключение MK_E_UNAVAILABLE; вы можете использовать метод getCode для проверки кода исключения.

Список изменений

Версия Описание
8.0.0 codepage теперь допускает значение null.

Примечания

Внимание

Использование com_get_active_object() в контексте веб-сервера - это не самая умная идея. Большинство приложений COM/OLE спроектированы так, что не могут работать одновременно с несколькими пользователями, даже (или особенно) Microsoft Office. Больше полезной информации читайте в » Considerations for Server-Side Automation of Office.

Добавить

Примечания пользователей 1 note

up
-1
gerrit at timingteam dot nl
15 years ago
Please note the next behavior (Apache 2.2.8, W2K, WXP)

If Apache runs as a service, com_get_active_object() always returns MK_E_UNAVAILABLE, even when it is definitely sure that the Running Object Table contains a reference to the required object.

If Apache runs in a console, com_get_active_object() returns the object handle as required.

This apparently is a Windows issue.
To Top