PHP と COM
PHP は Win32 プラットフォーム上で COM と DCOM オブジェクトに アクセスすることができます。
- ã¨ããè¨ç®ãè¡ã DLL ãä½æãã¾ãããããã PHP ã§å®è¡ãããæ¹æ³ã¯ ããã¾ãã?
- 'Unsupported variant type: xxxx (0xxxxx)'ã¨ã¯ã©ãããæå³ã§ãã?
- PHP ã§ãã¸ã¥ã¢ã«ãªãã¸ã§ã¯ããæä½ã§ãã¾ãã?
- COM ãªãã¸ã§ã¯ããã»ãã·ã§ã³æ å ±ã¨ãã¦ä¿åã§ãã¾ãã?
- COM ã®åºåããã¨ã©ã¼ããã©ããã§ãã¾ãã?
- PHP ã¹ã¯ãªãããã DLL ãä½æãããã¨ã¯ã§ãã¾ãã? Perl ã§ã¯ ã§ããã®ã§ããã
- 'Unable to obtain IDispatch interface for CLSID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}'ã¨ã¯ã©ãããæå³ã§ãã?
- COM ãªãã¸ã§ã¯ãããªã¢ã¼ããµã¼ãããå®è¡ããã«ã¯ã©ãããã°ããã§ãã?
- 'DCOM is disabled in C:\path...\scriptname.php on line 6' ã¨ãã ã¨ã©ã¼ãçºçãã¾ãããã©ãããã°ããã§ããï¼
- PHP ã使ç¨ãããã¼ã¸ã§ ActiveX ãªãã¸ã§ã¯ãããã¼ã/æä½ãããã¨ã¯ ã§ãã¾ãã?
- å®è¡ä¸ã®ã³ã³ãã¼ãã³ãã®ã¤ã³ã¹ã¿ã³ã¹ãåå¾ãããã¨ã¯ã§ãã¾ãã?
- COM ãªãã¸ã§ã¯ãããéããã¦ããã¤ãã³ããæ±ãæ¹æ³ã¯ããã¾ããï¼
- 2 ã¤ä»¥ä¸ã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ãå ¬éãã¦ãã COM ãªãã¸ã§ã¯ãã®ã¡ã½ããã å¼ã³åºããã¨ãã¦å°ã£ã¦ãã¾ããã©ãããã°ããã§ãã?
- PHP 㯠COM ãæ±ããã¨ãããã¨ã¯åããã¾ãããã§ã¯ COM+ ã«ã¤ãã¦ã¯ ã©ãã§ãã?
- PHP ã COM ãªãã¸ã§ã¯ããæä½ãããã¨ãã§ããã¨ãããã¨ã¯ãMTS ã 使ã£ã¦ã³ã³ãã¼ãã³ããªã½ã¼ã¹ãæ±ããã¨èãã¦ãããã¨ãããã¨ã§ããï¼
-
とある計算を行う DLL を作成しました。これを PHP で実行させる方法は ありますか?
-
もしそれが普通の DLL なら、現在のところ PHP からそれを実行する手段は ありません。DLL が COM サーバを含んでいて IDispatch インターフェースが 実装されている場合、PHP からアクセスすることができます。
-
'Unsupported variant type: xxxx (0xxxxx)'とはどういう意味ですか?
-
多くの VARIANT タイプとその組み合わせがあり、そのほとんどは サポートされていますが、残りのいくつかは未だ実装されていません。 また配列も完全にサポートされているわけではなく、PHP と COM の間で 受け渡しが可能なのは 1 次元の添字付配列のみです。もしこの他に サポートされていないタイプを見つけた場合は(既知でなければ)、 できる限りの情報を添えてバグとして報告してください。
-
PHP でビジュアルオブジェクトを操作できますか?
-
基本的には可能です。しかし PHP はほとんどの場合ウェブスクリプティングの 言語として使用されウェブサーバ上で実行されるため、ビジュアルオブジェクトが サーバのデスクトップに現れることはありません。もし PHP を アプリケーション作成に使用する、すなわち PHP-GTK と合わせて 使用する場合にはアクセスに制限はありません。COM を通じて ビジュアルオブジェクトを操作することができます。
-
COM の出力するエラーをトラップできますか?
-
PHP 5 では、COM 拡張モジュールは com_exception 例外をスローします。これをキャッチし、code メンバを調べることで次にすべきことを決定できます。
PHP 4 では、PHP が提供する方法(@, track_errors, ...)を使用して COM のエラーをトラップすることはできません。
-
'Unable to obtain IDispatch interface for CLSID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}'とはどういう意味ですか?
-
このエラーが発生する理由はいくつかあります。
- CLSID が正しくない
- 要求された DLL が無い
- 要求されたコンポーネントが IDispatch インターフェースを実装していない
-
COM オブジェクトをリモートサーバから実行するにはどうすればよいですか?
-
ローカルオブジェクトを実行するのと全く同様です。ただ、COM コンストラクタの 2 番目のパラメータにリモートマシンの IP アドレスを 渡すだけです。
php.iniに COM=TRUE をセットするのを忘れないでください。
-
'DCOM is disabled in C:\path...\scriptname.php on line 6' という エラーが発生しました。どうすればよいですか?
-
php.ini を編集して COM=TRUE としてください。
-
PHP を使用したページで ActiveX オブジェクトをロード/操作することは できますか?
-
これは PHP とは関係ありません。ActiveX オブジェクトは、HTML ドキュメントから要求があった場合にクライアント側でロードされます。 PHP スクリプトとは関係が無く、従ってサーバ側と直接やりとりすることも できません。
-
実行中のコンポーネントのインスタンスを取得することはできますか?
-
モニカーを使用すれば可能です。同じ Word インスタンスに対して複数の 参照を取得したい場合は、以下のようにしてインスタンスを生成します。
<?php $word = new COM("C:\docs\word.doc"); ?>
こうすれば、実行中のインスタンスが無い、もしくはインスタンスの 取得が不可能だった場合には新規に生成され、インスタンスが取得できた 場合にはそのハンドルを返します。
-
COM オブジェクトから送られてくるイベントを扱う方法はありますか?
-
イベントシンクを定義し、com_event_sink() を使用してそれをバインドすることが可能です。PHP でイベントシンククラスの 雛形を作成するために com_print_typeinfo() を 使用することが可能です。
-
2 つ以上のインターフェースを公開している COM オブジェクトのメソッドを 呼び出そうとして困っています。どうすればよいですか?
-
この問題に対する答えは、簡単ですが残念なものです。正確には わかりませんが、おそらく打つ手はありません。もしこの問題に関する 具体的な情報があったら» 私 に教えてください。