PHP Conference Nagoya 2025

com_get_active_object

(PHP 5, PHP 7, PHP 8)

com_get_active_objectRetourne un objet représentant l'instance actuelle d'un objet COM

Description

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

com_get_active_object() est similaire à la création d'une nouvelle instance comd'un objet COM, excepté qu'elle ne retournera un objet à votre script uniquement si l'objet est actuellement instancié. Les applications OLE utilisent quelque chose de connu en tant que "Running Object Table" qui permet aux applications connues d'être exécutées juste une fois ; cette fonction expose la fonction GetActiveObject() de la bibliothèque COM pour récupérer un objet d'une instance en cours d'utilisation.

Liste de paramètres

prog_id

Le paramètre prog_id doit être soit le ProgID, soit le CLSID de l'objet dont vous voulez avoir l'accès (par exemple, Word.Application).

codepage

utilise les mêmes règles que dans la com classe.

Valeurs de retour

Si l'objet demandé est en cours d'exécution, la fonction retournera à votre script ce que toute autre objet COM retournerait.

Erreurs / Exceptions

Il y a beaucoup de raisons pour lesquelles cette fonction peut échouer. Dans cette situation, le code erreur de l'exception devrait être MK_E_UNAVAILABLE ; vous pouvez utiliser la méthode getCode de l'objet exception pour vérifier le code de l'exception.

Historique

Version Description
8.0.0 codepage est désormais nullable.

Notes

Avertissement

Utiliser la fonction com_get_active_object() sur un serveur web n'est pas toujours la meilleure idée. La plupart des applications COM/OLE ne sont pas faites pour gérer plus d'un client en concurrence, comme (et surtout !!) Microsoft Office. Vous devriez lire les » considérations pour les automatismes coté serveur pour Office pour plus d'informations sur les comportements généraux.

add a note

User Contributed Notes 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