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.
com_get_active_object
(PHP 5)
com_get_active_object — COM nesnesinin çalışan bir örneği için tanıtıcı döner
Açıklama
com_get_active_object() işlevi COM nesnesinden yeni bir örnek yaratma ile benzer işi yapar. Aralarındaki fark eğer nesne hali hazırda çalışıyorsa işlevden bir nesne dönecektir. OLE uygulamaları, sık kullanılan uygulamaları sadece bir kez yüklemek için Çalışan Nesne Tablosu olarak bilinen yapıyı kullanır; bu işlev çalışan nesne tanıtıcısını almak için COM kütüphanesinden GetActiveObject() işlevini kullanır.
Değiştirgeler
-
progid -
Erişmek istediğiniz nesne için (örneğin Word.Application)
progiddeğiştirgesi ProgID veya CLSID olmalıdır. -
kodSayfasi -
Tam olarak COM sınıfındaki gibi rol oynar.
Dönen Değerler
İstenen nesne çalışıyorsa, betiğinizdeki herhangi bir COM nesnesi gibi döndürülecektir.
Hatalar/İstisnalar
İşlevin başarısız olmasının çeşitli nedenleri vardır, en sık karşılaşılan
istenen nesnenin çalışmamasından kaynaklanır. Bu durumda, istisna hata kodu
MK_E_UNAVAILABLE olacaktır; Hata kodunu kontrol etmek
için istisna nesnesinin getCode yöntemini
kullanabilirsiniz.
Notlar
com_get_active_object() işlevini bir html sunucuda kullanmak akıllıca bir fikir değildir. Birçok COM/OLE uygulaması eşzamanlı birden fazla istemci ile çalışacak şekilde tasarlanmamıştır, hatta (özellikle) Microsoft Office bile. Bu konuda daha fazla bilgi için » Sunucu taraflı ofis özdevinimi üzerine düşünceler adresine bakınız.
