downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

com_load> <com_isenum
Last updated: Fri, 13 Nov 2009

view this page in

com_load_typelib

(PHP 4 >= 4.1.0, PHP 5)

com_load_typelibタイプライブラリを読み込む

説明

bool com_load_typelib ( string $typelib_name [, bool $case_insensitive ] )

タイプライブラリを読み込んで定数をエンジン内に登録し、それらが define() を使用して定義されているかのように 扱えるようにします。

あまり融通の利く方法ではありませんが、 実行時設定 設定を利用して定数の 事前読み込みと登録をすませるほうがずっと効率的であることに 注意しましょう。

実行時設定 を有効にすると、 PHP がインスタンス化した COM オブジェクトに関連付けられている定数を 自動的に登録しようと試みます。これは COM オブジェクト自身の提供する インターフェースに依存し、常に可能であるとは限りません。

パラメータ

typelib_name

typelib_name は、以下のいずれかの形式となります。

  • .tlb ファイル、あるいはタイプライブラリを含む 実行モジュールのファイル名。

  • タイプライブラリの GUID の後にバージョン番号を続ける。たとえば {00000200-0000-0010-8000-00AA006D2EA4},2,0 のような形式。

  • タイプライブラリ名。たとえば Microsoft OLE DB ActiveX Data Objects 1.0 Library のような形式。

PHP は、この順序でタイプライブラリ名の解決を試みます。リストの下の ほうにいくほど検索処理のコストが高くなります。タイプライブラリ名に よる検索は、一致するものが見つかるまでレジストリを物理的に列挙していく という方法をとっています。

case_insensitive

case_insensitive は、 define() 関数の同名のパラメータと同じ働きをします。

返り値

成功した場合に TRUE を、失敗した場合に FALSE を返します。



com_load> <com_isenum
Last updated: Fri, 13 Nov 2009
 
add a note add a note User Contributed Notes
com_load_typelib
RQuadling at GMail dot com
17-Jun-2008 10:40
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.

<?php
echo 'com.autoregister_typelib = ', ini_get('com.autoregister_typelib'), PHP_EOL;

$o_CrObjectFactory = New COM('CrystalReports11.ObjectFactory.1');

$o_CrApplication = $o_CrObjectFactory->CreateObject("CrystalDesignRunTime.Application");

echo
'Will not be defined : ', crOpenReportByDefault, PHP_EOL;

com_load_typelib('CrystalDesignRunTime.Application');

echo
'Will now be defined : ', crOpenReportByDefault, PHP_EOL;
?>

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
04-May-2004 02:18
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:

<?php
$aNero
= new COM("Nero.Nero") or die ("Nero didn't load, too bad");
com_load_typelib("Nero.Nero");
$aNero->GetDrives(NERO_MEDIA_CD);
?>

But this one will not, since PHP will return a message saying that the constant is undefined:

<?php
$aNero
= new COM("Nero.Nero") or die ("Nero didn't load, too bad");
$aNero->GetDrives(NERO_MEDIA_CD);
?>

This one took me a while to figure out, hope it helps. 

Also, check out http://www.php.net/manual/en/faq.com.php to find out how to get COM events working in PHP.
ojpp at webdevfm dot com
31-Jan-2004 02:33
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:

Change a configuration in the php.ini:

; autoregister constants of a components typlib on com_load()
com.autoregister_typelib = true

When com.autoregister_typelib directive is true, PHP parser manage the COM server type library, I hope it helps.
richard dot quadling at carval dot co dot uk
26-Feb-2003 01:55
<?php
// Some servers may have an auto timeout, so take as long as you want.
set_time_limit(0);

// Show all errors, warnings and notices whilst developing.
error_reporting(E_ALL);

// Used as a placeholder in certain COM functions where no parameter is required.
$empty = new VARIANT();

// Load the appropriate type library.
com_load_typelib('Word.Application');

// 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']);

$word->Selection->GoTo(wdGoToBookmark,$empty,$empty,'YourAge');
$word->Selection->TypeText($_GET['YourAge']);

// Save it, close word and finish.
$word->Documents[1]->SaveAs("C:/{$_GET['YourName']}.doc");
$word->Quit();
$word->Release();
$word = null;
print
"Word closed.\n";
?>

The example document is ...

Hello [Bookmark of YourName], you are [Bookmark of YourAge] years old.

and it would be called ...

word.php?YourName=Richard%20Quadling&YourAge=35

Regards,

Richard.

com_load> <com_isenum
Last updated: Fri, 13 Nov 2009
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites