2024年PHP日本大会

com_get_active_object

(PHP 5, PHP 7, PHP 8)

com_get_active_object返回对正在运行的COM对象的句柄

描述

com_get_active_object(字符串 $prog_id, ?整数 $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现在可以为空。

备注

警告

在Web服务器环境中使用com_get_active_object()并非总是明智之举。大多数COM/OLE应用程序并非设计为同时处理多个客户端,甚至(尤其!)Microsoft Office也是如此。您应该阅读» 关于服务器端Office自动化的一些注意事项以了解更多关于相关问题的资料。

添加备注

用户贡献的备注 1条备注

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

如果Apache作为服务运行,则即使确定“运行对象表”包含对所需对象的引用,com_get_active_object()也会始终返回MK_E_UNAVAILABLE。

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

这显然是Windows问题。
To Top