com_load_typelib

Description

Loads 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.

Parameters

typelib_name

typelib_name can be one of the following:

The filename of a .tlb file 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.

PHP will attempt to resolve the type library in this order, as the
process gets more and more expensive as you progress down the list;
searching for the type library by name is handled by physically
enumerating the registry until we find a match.

case_insensitive

The case_insensitive behaves in the same way as
the parameter with the same name in the define()
function.

Return Values

User Contributed Notes 5 notes

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.

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:

Hello PHP community, I want to help in a problem I found in this COM built-in function: com_load_typelib(), when I executed it in order to open a COM Server process (for example: Word, Excel, etc.) I was in trouble to release the object from memory, I figured it out, this is the solution:

// Create an object to use.$word = new COM('word.application') or die('Unable to load Word');print "Loaded Word, version {$word->Version}\n";

// Open a new document with bookmarks of YourName and YourAge.$word->Documents->Open('C:/Unfilled.DOC');

// Fill in the information from the form.$word->Selection->GoTo(wdGoToBookmark,$empty,$empty,'YourName'); // Note use of wdGoToBookmark, from the typelibrary and the use of $empty.$word->Selection->TypeText($_GET['YourName']);