com_load_typelib() - com组件
com_load_typelib()
(PHP 4 >= 4.1.0, PHP 5, PHP 7)
装载一个 Typelib
说明
com_load_typelib(string $typelib_name[,bool $case_insensitive= true]): boolLoads a type-library and registers its constants in the engine, as though they were defined using define().
Note that it is much more efficient to use the configuration setting to pre-load and register the constants, although not so flexible.
If you have turned on , then PHP will attempt to automatically register the constants associated with a COM object when you instantiate it. This depends on the interfaces provided by the COM object itself, and may not always be possible.
参数
$typelib_name$typelib_namecan be one of the following:
The filename of a.tlbfile or the executable module that contains the type library.
The type library GUID, followed by its version number, for example{00000200-0000-0010-8000-00AA006D2EA4},2,0.
The type library name, e.g.Microsoft OLE DB ActiveX Data Objects 1.0 Library.
The$case_insensitivebehaves in the same way as the parameter with the same name in the define() function.
返回值
成功时返回TRUE
,或者在失败时返回FALSE
。
I had some problems with a third-party Word-controlling code that is somewhat similar to Richard's example. (Word 2007 SP1, XP SP2.) Rewrote some parts according to that example, no luck. Error messages from Word were crazy: "Bad parameter" -- it didn't like wdGoToBookmark but was ok with its numeric equivalent -1; "Call to undefined method variant::SaveAs()" -- the same with Save() that was suitable in my case, so no options were remaining. But then I ran the example via php.exe in the command line, and it worked! Eventually it turned out that Apache service must be run as some real user instead of SYSTEM.
Some libraries load other libraries as part of their functionality. For example Crystal Reports Object Factory uses the CreateObject() method to create an instance of a Crystal Design RunTime Application. If you want to use constants defined in the newly loaded library, you will need to manually register the library - even with com.autoregister_typelib set to true. outputs ... com.autoregister_typelib = 1 Will not be defined : Notice: Use of undefined constant crOpenReportByDefault - assumed 'crOpenReportByDefault' in C:\refl.php on line 8 crOpenReportByDefault Will now be defined : 0
In case any of you were wondering what com_load_typelib actually DOES, I have found that it loads constants\enums that the COM obeject has defined. The example below is using the Nero COM object (from Nero Burning rom, version 6+). The Nero object defines a bunch of constants, but they can not be used as PHP constants unless you use the mentioned function. So the example below will work just fine:
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!