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 应用程序使用称为 "Running Object Table" 的东西来允许仅启动一次众所周知的应用程序;此函数公开了 COM 库函数 GetActiveObject() 以获取对正在运行实例的句柄。

参数

prog_id

prog_id 必须是您要访问的对象的 ProgID 或 CLSID(例如 Word.Application)。

codepage

其行为与 com 类中的行为完全相同。

返回值

如果请求的对象正在运行,它将像任何其他 COM 对象一样返回到您的脚本。

错误/异常

此函数可能失败的原因有很多,最常见的原因是该对象尚未运行。在这种情况下,异常错误代码将为 MK_E_UNAVAILABLE;您可以使用异常对象的 getCode 方法来检查异常代码。

变更日志

版本 描述
8.0.0 codepage 现在可以为空。

备注

警告

在 Web 服务器环境中使用 com_get_active_object() 并不总是一个明智的选择。大多数 COM/OLE 应用程序并非设计为同时处理多个客户端,即使(或尤其是!)Microsoft Office。您应该阅读 » Considerations for Server-Side Automation of Office 以了解更多有关所涉及的常见问题的信息。

添加备注

用户贡献的备注 1 条备注

gerrit at timingteam dot nl
15 年前
请注意以下行为(Apache 2.2.8,W2K,WXP)

如果 Apache 以服务的身份运行,com_get_active_object() 始终返回 MK_E_UNAVAILABLE,即使确定 Running Object Table 包含对所需对象的引用。

如果 Apache 在控制台中运行,com_get_active_object() 会按要求返回对象句柄。

这显然是一个 Windows 问题。
To Top